2012-01-25 14 views
33

पर अजाक्स के साथ सरणी भेजें मेरे पास फ़ंक्शन द्वारा बनाई गई सरणी है। पुश। सरणी में बहुत बड़ा डेटा है। PHP स्क्रिप्ट को यह सबसे अच्छा तरीका कैसे भेजा जाता है?PHP स्क्रिप्ट

dataString = ??? ; // array? 
    $.ajax({ 
     type: "POST", 
     url: "script.php", 
     data: dataString, 
     cache: false, 

     success: function(){ 
      alert("OK"); 
     } 
    }); 

script.php:

$data = $_POST['data']; 

    // here i would like use foreach: 

    foreach($data as $d){ 
    echo $d; 
    } 

कैसे है इस के लिए सबसे अच्छा तरीका है?

उत्तर

85

JSON में अपने डेटा स्ट्रिंग सांकेतिक शब्दों में बदलना।

dataString = ??? ; // array? 
var jsonString = JSON.stringify(dataString); 
    $.ajax({ 
     type: "POST", 
     url: "script.php", 
     data: {data : jsonString}, 
     cache: false, 

     success: function(){ 
      alert("OK"); 
     } 
    }); 

अपने PHP

$data = json_decode(stripslashes($_POST['data'])); 

    // here i would like use foreach: 

    foreach($data as $d){ 
    echo $d; 
    } 

नोट में

जब आप पोस्ट के माध्यम से डेटा भेजने के लिए, यह एक keyvalue जोड़ी के रूप में की जरूरत है।

इस प्रकार

data: dataString

गलत है। इसके बजाय कार्य करें:

data: {data:dataString}

+11

'JSON.stringify' का उपयोग क्यों करें? केवल 'डेटा: {डेटा: डेटास्ट्रिंग}' के साथ क्या गलत है? –

+0

@ रॉकेट: मुझे लगता है कि आप यह भी कर सकते हैं, जिस स्थिति में Jquery सरणी को क्रमबद्ध करेगा। – xbonez

+7

फिर आपको 'json_decode', '$ _POST [' data '] की आवश्यकता नहीं होगी,' पहले से ही एक सरणी होगी। –

6
dataString = []; 
    $.ajax({ 
     type: "POST", 
     url: "script.php", 
     data:{data: $(dataString).serializeArray()}, 
     cache: false, 

     success: function(){ 
      alert("OK"); 
     } 
    }); 

http://api.jquery.com/serializeArray/

+0

और मैं इसे PHP फ़ाइल में कैसे पढ़ सकता हूं? –

+1

चूंकि 'serializeArray' एक JSOn स्ट्रिंग बनाकर काम करता है, तो आपको पहले PHP पक्ष – xbonez

+5

पर' json_decode' का उपयोग करने की आवश्यकता होगी, मैं 'serializeArray' को छोड़ने का सुझाव देता हूं, और केवल 'डेटा: {डेटा: डेटास्ट्रिंग}'। फिर '$ _POST ['डेटा']' एक सरणी होगी। –

3

डाटा jQuery में ajax() समारोह अपने इनपुट के रूप में अज्ञात वस्तुओं स्वीकार करता है, documentation देखते हैं। तो तुम क्या खोज रहे हैं के उदाहरण है:

dataString = {key: 'val', key2: 'val2'}; 
$.ajax({ 
     type: "POST", 
     url: "script.php", 
     data: dataString, 
     cache: false, 

     success: function(){ 
      alert("OK"); 
     } 
    }); 

तुम भी/पोस्ट लिखने के अपने दम पर क्वेरी मिलता है, key=val&key2=val2 की तरह है, लेकिन आप अपने आप को बचने जो अव्यावहारिक है संभाल करने के लिए होगा सकता है।

+0

यह मेरे लिए काम नहीं करता है, हालांकि 'डेटा: {id_arr: [सरणी चर यहां जाता है]} 'PHP – bromelio

1

डेटास्ट्रिंग से पता चलता है कि डेटा स्ट्रिंग में स्वरूपित है (और शायद किसी चरित्र द्वारा डिलीमिट किया गया है)।

$data = explode(",", $_POST['data']); 
foreach($data as $d){ 
    echo $d; 
} 

यदि डेटा स्ट्रिंग एक स्ट्रिंग नहीं है लेकिन वास्तव में एक सरणी (आपका प्रश्न क्या इंगित करता है) JSON का उपयोग करें।

+0

डेटा में सरणी' $ _POST [' id_arr '] 'के रूप में सुलभ होगा, यह केवल उदाहरण है। मुझे इसका उपयोग नहीं करना चाहिए, लेकिन मुझे नहीं पता कि मुझे –

+1

'डेटा का उपयोग करना चाहिए: {id_arr: [सरणी चर यहां जाता है]}, 'PHP में सरणी के रूप में' $ _POST [' id_arr '] 'के रूप में पहुंच योग्य होगा – bromelio

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