jQuery POST मापदंडों के रूप में स्ट्रिंग भेजें


98

मैं अजाक्स पोस्ट पैरामीटर के रूप में एक स्ट्रिंग भेजना चाहता हूं।

निम्नलिखित कोड:

$.ajax({
   type: "POST",
   url: "http://nakolesah.ru/",
   data: 'foo=bar&ca$libri=no$libri',
   success: function(msg){
     alert('wow'+msg);
   }
});

काम नहीं कर रहा। क्यों?


2
मैं देखता हूं कि आप एक PHP डेवलपर हैं और मैं यह भी देखता हूं कि आपने यह किया है ca$libri=no$libri:। बस यहाँ सुनिश्चित करने के लिए जाँच की जा रही है ... क्या आप सुनिश्चित हैं कि आप गलती से PHP निर्माणों का उपयोग करने की कोशिश नहीं कर रहे हैं जहाँ JS होना चाहिए? यदि आप $libriचर के मान को इस स्ट्रिंग में शामिल करना चाहते हैं , तो यह प्रयास करें 'foo=bar&ca' + $libri + '=no' + $libri:।
ट्रीफेस

nono :) मैं php द्वारा js उत्पन्न करने के सभी क्षणों को समझता हूँ :) यह APS में ajax चरों का नाम है। मैं पार्सर बनाता हूं जो अजाक्स के साथ कुछ साइट को पार्स करता है। और अब मुझे त्रुटि क्यों मिली। यह coz crossdomain क्वेरी है। मुझे अपने सर्वर पर सबसे पहले क्वेरी बनानी होगी :)
मिरोदर

जवाबों:


182

इस तरह की कोशिश करें:

$.ajax({
    type: 'POST',
    // make sure you respect the same origin policy with this url:
    // http://en.wikipedia.org/wiki/Same_origin_policy
    url: 'http://nakolesah.ru/',
    data: { 
        'foo': 'bar', 
        'ca$libri': 'no$libri' // <-- the $ sign in the parameter name seems unusual, I would avoid it
    },
    success: function(msg){
        alert('wow' + msg);
    }
});

1
क्या यह डेटा नहीं होना चाहिए: {फू: 'बार ’}, एपोस्ट्रोफ के बिना?
मेरियस स्टेंसनू

6
@ मार्सैस्टेनस्कु, दोनों समान समकक्ष जावास्क्रिप्ट सिंटैक्स हैं।
डारिन दिमित्रोव

3
यह भी सुनिश्चित करें कि सीए $ लिबरी में $ पूरी तरह से ठीक है
माइकल क्रुक

स्ट्रिंग के रूप में पोस्टिंग के बारे में सवाल का जवाब नहीं देता :(, नीचे जवाब देखें।
एंड्रयू

यह काम करता है, लेकिन यह नहीं है: फू: 'बार'। मैंने 2 दिन बिताए हैं क्योंकि मैंने दोनों तरफ के तार नहीं जोड़े हैं !!!
यूजेन Sunic

39
$.ajax({
    type: 'POST',    
    url:'http://nakolesah.ru/',
    data:'foo='+ bar+'&calibri='+ nolibri,
    success: function(msg){
        alert('wow' + msg);
    }
});

15
यही कारण है कि मैं एक स्ट्रिंग के रूप में $ .post डेटा भेजने का पता लगाने के लिए यहां आया था। स्वीकृत उत्तर मुझे बिल्कुल मदद नहीं करता है। धन्यवाद।
मिर्ची

सहमत, मेरे पास एक ऐसी स्थिति थी जहां एक फ्रेम के लिए एक स्ट्रिंग की आवश्यकता थी जिसे मैं विकसित कर रहा था, अच्छा जवाब। मेरी स्थिति में, मैं डेटा के बगल में एक स्ट्रिंग में स्ट्रिंग डालकर यह काम करने में सक्षम था:, मेरी स्ट्रिंग का प्रारूप 'था; var = value & var2 = value2'
जोसेफ Astrahan

13

मैं देख रहा हूं कि वे आपके सवाल को नहीं समझ पाए। उत्तर है: अपने "अजाक्स कॉल" में इस तरह "पारंपरिक" पैरामीटर जोड़ें:

$.ajax({
  traditional: true,
  type: "POST",
  url: url,
  data: custom ,
  success: ok,
 dataType: "json"
});

और यह एक STRING के रूप में PASSED पैरामीटर के साथ काम करेगा।


धन्यवाद! यह मेरा दिन बचाता है!
डेट टीटी

11

इसी तरह के एक आवेदन के लिए मुझे अपनी dataवस्तु को JSON.stringify()इस तरह लपेटना पड़ा :

data: JSON.stringify({ 
  'foo': 'bar', 
  'ca$libri': 'no$libri'
}),

API एक REST क्लाइंट के साथ काम कर रहा था, लेकिन ब्राउज़र में jquery ajax के साथ कार्य करने के लिए इसे प्राप्त नहीं कर सका। कठोर समाधान था।


हमें ऐसा क्यों करना पड़ा?
रेनॉयर रीस

निश्चित नहीं है, लेकिन प्रतिक्रिया में कुछ पात्रों को तब तक तार नहीं माना जाना चाहिए जब तक कि मजबूर न हों।
डायलन वालडे १ '

4

यकीन नहीं होता कि क्या यह अभी भी वास्तविक है .. सिर्फ भविष्य के पाठकों के लिए। यदि आप वास्तव में चाहते हैं कि URL के हिस्से के रूप में अपने मापदंडों को पारित करना है, तो आपको संभवतः jQuery.param () का उपयोग करना चाहिए ।


1

आपके सवाल का सीधा जवाब नहीं .. लेकिन केवल एक वाक्यविन्यास है जो मेरे लिए काम करता था -

data: '{"winNumber": "' + win + '"}',

और पैरामीटर-नाम सर्वर विधि के तर्क के साथ मेल खाता है


1

मैंने भी इस सटीक समस्या का सामना किया है। लेकिन मुझे एक समाधान मिला है और इसने पूरी तरह से काम किया है। मुझे उन मापदंडों को पारित करने की आवश्यकता है जो पहले से ही जावास्क्रिप्ट फ़ंक्शन द्वारा निर्मित हैं। इसलिए नीचे कोड मेरे लिए काम कर रहा है। मैंने बैकएंड के लिए कोल्ड फ्यूजन का इस्तेमाल किया । मैंने बस मापदंडों को एक चर के रूप में सीधे इस्तेमाल किया।

                    $.ajax({
                    url: "https://myexampleurl.com/myactionfile.cfm",
                    type: "POST",
                    data : {paramert1: variable1,parameter2: variable2},
                    success: function(data){
                        console.log(data);                              
                    } )};

0

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

var bar = 'xyz';
var calibri = 'no$libri';

$.ajax({
   type: "POST",
   dataType: "json",
   contentType: "application/json; charset=utf-8",
   url: "http://nakolesah.ru/",
   data: '{ foo: \'' + bar + '\', zoo: \'' + calibri + '\'}',
   success: function(msg){
       alert('wow'+msg);
   },
});

यहाँ, बार और कैलीबरी दो स्ट्रिंग वैरिएबल हैं और आप वेब मेथड में संबंधित स्ट्रिंग मापदंडों के लिए जो भी स्ट्रिंग वैल्यू पास कर सकते हैं।

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