2012-11-13 23 views
6

मैं AJAX के लिए नया हूं और जो कुछ भी PHP को jQuery पर वापस भेजता है, उससे उलझन में हूं।AJAX jQuery PHP रिटर्न वैल्यू

$.ajax({ url: '/my/site', 
    data: {action: 'test'}, 
    type: 'post', 
    success: function(output) { 
        alert(output); 
       } 
}); 

(मैं ajax से दूसरे StackOverflow पेज इस ले लिया।)

लेकिन विभिन्न अन्य संसाधनों पर वे सफलता अनुभाग इस तरह दिखना होगा: तो तुम इस तरह एक AJAX समारोह है

success: function(data) {functionfoocommandshere} 

मैं इस परिवर्तनीय के नामकरण को निर्देशित करने के लिए उलझन में हूं? यदि PHP अंततः एक सरणी echo करता है:

echo $myVar; 

मैं इसे AJAX से कैसे प्राप्त कर सकता हूं?

+1

'' success' विधि के डेटा' चर कुछ भी आयोजन करेगा आप 'PHP में echo' में अजाक्स के माध्यम से इसे प्राप्त कर सकते हैं। आप सीधे सरणी नहीं पारित कर सकते हैं; आपको इसे पहले JSON में परिवर्तित करना होगा। – woz

+0

आप किस नाम के बारे में उलझन में हैं? – Alfo

+0

यह देखें http://www.php4every1.com/tutorials/jquery-ajax-tutorial/ – GBD

उत्तर

13

एक अजाक्स-अनुरोध पूरी साइट प्राप्त करता है। तो आपको चर में कोई डेटा नहीं मिलेगा, लेकिन डेटा-पैरामीटर में पूरी साइट। आपके द्वारा एकत्र किए गए सभी ईकोस इस पैरामीटर में होंगे। यदि आप एक सरणी पुनर्प्राप्त करना चाहते हैं, तो आपको इसे पहले जेसन में बदलना चाहिए।

echo json_encode($myArray); 

तो फिर तुम इस तरह से

$.ajax({ url: '/my/site', 
data: {action: 'test'}, 
dataType: 'json', 
type: 'post', 
success: function(output) { 
       alert(output); 
      } 
}); 
+0

वापस करना चाहता हूं क्या आपको वास्तव में मूल्य को 'echo' करने की आवश्यकता है? अगर आप 'आउटपुट' दिखाना नहीं चाहते हैं तो क्या होगा? @Gnietschow –

+0

'echo' उपयोगकर्ता को कुछ भी नहीं दिखाता है, यह केवल सर्वर की प्रतिक्रिया में डेटा लिखता है, इसलिए इसे क्लाइंट को भेजा जाता है। AJAX कॉल को 'आउटपुट' प्राप्त करने के बाद, यह आप पर निर्भर करता है कि आप उपयोगकर्ता को यह प्रतिक्रिया दिखाते हैं या नहीं। – Gnietschow

-1

PHP AJAX फ़ंक्शन से लौटाया गया डेटा, success ब्लॉक से पुनर्प्राप्त किया जा सकता है। इधर, manual

$.ajax({ url: '/my/site', 
data: {action: 'test'}, 
type: 'post', 
dataType: 'json', 
success: function(output) { 
    //output is the data returned from PHP AJAX function in JSON format 
    alert(output); 
    } 
}); 
+0

तो इससे कोई फर्क नहीं पड़ता? .ajax कमांड को पता चलेगा कि फ़ंक्शन() तर्क के भीतर कुछ भी PHP जानकारी लौटा रहा है? – eatonphil

+1

हाँ, यह सही है। –

+0

बहुत बढ़िया, जो चीज़ों को साफ़ करता है! – eatonphil

6

आप PHP फ़ाइल में है जावास्क्रिप्ट में इस्तेमाल के लिए एक और अधिक सुविधाजनक प्रारूप में सरणी चालू करने के लिए json_encode का उपयोग करें।

echo json_encode($myArray); 

फिर, अपने जावास्क्रिप्ट में, success पद्धति की data चर JSON आयोजन करेगा: तो आप की तरह कुछ होगा। जावास्क्रिप्ट ऑब्जेक्ट में कनवर्ट करने के लिए jQuery के parseJSON का उपयोग करें, जो फिर कुशलतापूर्वक उपयोग करना बहुत आसान होगा। मैं नहीं पता है कि तुम क्या सरणी शामिल है, लेकिन यदि आप कुछ इस तरह कर सकते हैं:

$.ajax({ url: '/my/site', 
    data: {action: 'test'}, 
    type: 'post', 
    success: function(data) { 
     var obj = jQuery.parseJSON(data); 
     alert(obj.name[0] === "John"); 
     } 
}); 

फिर, data चर यहाँ कुछ भी अपने PHP आउटपुट में शामिल होंगे, लेकिन JSON एक आम और सुविधाजनक तरीका डेटा वापस स्थानांतरित करना है अपनी जावास्क्रिप्ट के लिए।

3
<script type="text/javascript"> 
$.ajax({ 
    url: '/my/site', 
    data: {action: 'test'}, 
    type: 'post', 
    success: function(output) { 
     alert(output); 
    } 
}); 
</script> 

<?php 
$action = $_POST['action']; 
echo $action;?> 

मुद्रित/प्रतिबिंबित कोई भी आउटपुट सफलता समारोह में वापस कर दिया जाएगा। यह आसान है जब आप किसी ऐसे एचटीएमएल कंटेनर को भरना चाहते हैं जिसे आपको वास्तविक समय में चलाने की ज़रूरत है।

एक बार जब आप इसे लटका लेंगे, तो दूसरा विकल्प JSON का उपयोग मानों के साथ चर को वापस करने के लिए करना है।

+0

यह पूर्ण HTML फॉर्मेट पुनर्प्राप्त कर रहा है, मैं केवल मूल्य –

संबंधित मुद्दे