JQuery $ .ajax के माध्यम से PHP के लिए जावास्क्रिप्ट सरणी पासिंग


79

मैं PHP में एक जावास्क्रिप्ट सरणी में हेरफेर करना चाहता हूं। क्या ऐसा कुछ करना संभव है?

$.ajax({
       type: "POST",
       url: "tourFinderFunctions.php",
       data: "activitiesArray="+activities,
       success: function() {
            $("#lengthQuestion").fadeOut('slow');
       }
    });

गतिविधियाँ एक एकल आयामी सरणी है जैसे:

var activities = ['Location Zero', 'Location One', 'Location Two'];

जब मैं यह कोशिश करता हूं तो स्क्रिप्ट पूरी नहीं होती ... मैं इसे कैसे ठीक कर सकता हूं?


जवाबों:


147
data: { activitiesArray: activities },

बस! अब आप इसे PHP में एक्सेस कर सकते हैं:

<?php $myArray = $_REQUEST['activitiesArray']; ?>

10
यह जवाब खोजने के लिए इतना कठिन क्यों था !? धन्यवाद, यह वही है जो मुझे चाहिए था।
वियान एस्टेरुझिन

एक हैकर के रूप में सरल! बहुत बढ़िया! आपने मुझे अपने आप पर हँसाया: D
अर्शदाद लिमिटेड

12

आप इसे भेजने से पहले अपने सरणी को JSON के रूप में सांकेतिक शब्दों में बदलना चाहते हैं, या आपको बस दूसरे छोर पर कुछ कबाड़ मिलेगा।

चूंकि आप जो भी भेज रहे हैं वह सरणी है, आप बस कर सकते हैं:

data: { activities: activities }

जो आपके लिए सरणी को स्वचालित रूप से परिवर्तित कर देगा।

देखें यहाँ जानकारी के लिए।


11

आपको इसे एक स्ट्रिंग में बदलने की आवश्यकता है। आप इसे JSON2 लाइब्रेरी में स्ट्रिंग पद्धति का उपयोग करके कर सकते हैं।

http://www.json.org/

http://www.json.org/js.html

कोड कुछ इस तरह दिखाई देगा:

var myJSONText = JSON.stringify(myObject);

इसलिए

['Location Zero', 'Location One', 'Location Two'];

हो जाएगा:

"['Location Zero', 'Location One', 'Location Two']"

आपको सर्वर पर इसे हैंडल करने के तरीके पर एक PHP गुरु का उल्लेख करना होगा। मुझे लगता है कि अन्य उत्तर यहां एक समाधान को अंतरंग करते हैं।

डेटा को सर्वर से एक समान तरीके से वापस किया जा सकता है। यानी आप इसे वापस एक ऑब्जेक्ट में बदल सकते हैं।

var myObject = JSON.parse(myJSONString);

9

मुझे पता है कि इसका उत्तर देने में बहुत देर हो सकती है, लेकिन इसने मेरे लिए शानदार तरीके से काम किया:

  1. अपनी जावास्क्रिप्ट ऑब्जेक्ट (json) के साथ स्ट्रिंग करें var st = JSON.stringify(your_object);

  2. अपने POST डेटा को "स्ट्रिंग" के रूप में पास करें (शायद jQuery का उपयोग कर: $.post('foo.php',{data:st},function(data){... });

  3. सर्वर साइड प्रोसेसिंग पर अपना डेटा डिकोड करें: $data = json_decode($_POST['data']);

यह बात है ... आप स्वतंत्र रूप से अपने डेटा का उपयोग कर सकते हैं।

बहु-आयामी सरणियों और एकल सरणियों को सामान्य सरणियों के रूप में नियंत्रित किया जाता है। उन तक पहुँचने के लिए बस सामान्य करते हैं $foo[4]

साहचर्य सरणियों (javsacript ऑब्जेक्ट्स) को php ऑब्जेक्ट्स (कक्षाएं) के रूप में नियंत्रित किया जाता है। उन्हें एक्सेस करने के लिए इसे कक्षाओं की तरह करें $foo->bar:।


2

मुझे इस तरह होना चाहिए:

$.post(submitAddress, { 'yourArrayName' : javaScriptArrayToSubmitToServer },
  function(response, status, xhr) {
    alert("POST returned: \n" + response + "\n\n");
  })

1

JQuery के सीरियल फ़ंक्शन का उपयोग करें

http://docs.jquery.com/Ajax/serialize

आमतौर पर सर्वर पर पोस्ट किए जाने के लिए उपयोगकर्ता इनपुट डेटा तैयार करने के लिए सीरियल का उपयोग किया जाता है। क्रमबद्ध डेटा एक मानक प्रारूप में है जो लगभग सभी सर्वर साइड प्रोग्रामिंग भाषाओं और रूपरेखाओं के साथ संगत है


1

यह मेरे लिए काम किया:

$.ajax({
    url:"../messaging/delete.php",
    type:"POST",
    data:{messages:selected},
    success:function(data){
     if(data === "done"){

     }
     info($("#notification"), data);
    },
    beforeSend:function(){
         info($("#notification"),"Deleting "+count+" messages");
    },
    error:function(jqXHR, textStatus, errorMessage){
        error($("#notification"),errorMessage);
    }
});

और यह आपके PHP के लिए :

$messages = $_POST['messages']
foreach($messages as $msg){
    echo $msg;
}

1

वांछित वैरिएबल नाम के लिए सरणी ऑपरेंड को जोड़ते हुए पीएचपी अंतर्निहित कार्यक्षमता का उपयोग करें।

यदि हम जावास्क्रिप्ट सरणी में मान जोड़ते हैं:

acitivies.push('Location Zero');
acitivies.push('Location One');
acitivies.push('Location Two');

इसे निम्नानुसार सर्वर पर भेजा जा सकता है:

$.ajax({        
       type: 'POST',
       url: 'tourFinderFunctions.php',
       'activities[]': activities
       success: function() {
            $('#lengthQuestion').fadeOut('slow');        
       }
});

गतिविधियों के आसपास उद्धरण देखें []। मूल्य निम्नानुसार उपलब्ध होंगे:

$_POST['activities'][0] == 'Location Zero';
$_POST['activities'][1] == 'Location One';
$_POST['activities'][2] == 'Location Two';

0

ऐसा इसलिए है क्योंकि PHP एक स्ट्रिंग के रूप में आपके मूल्य को पढ़ता है। यदि मैं अपने डेटा को ऑब्जेक्ट के रूप में पारित नहीं करना चाहता (जैसे पिछले उत्तरों में, जो ठीक भी हैं), तो मैं इसे केवल अपने ईमेल में करता हूं:

 $activitiesString = $_POST['activitiesArray'];
 $activitiesArray = (explode(",",$activitiesString));

अंतिम पंक्ति हर अल्पविराम के बाद स्ट्रिंग को बिट्स में विभाजित करती है। अब $ गतिविधियाँअरे भी एक सरणी है। यह तब भी काम करता है जब कोई अल्पविराम (आपके जावास्क्रिप्ट सरणी में केवल एक तत्व) नहीं है।

हैप्पी कोडिंग!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.