jQuery पोस्टिंग JSON


193

अपडेट: मैं var valueसर्वर को पास करना चाहूंगा

हैलो, वही पुराना, वही पुराना ... :)

मेरे पास एक फॉर्म है <form id="testForm" action="javascript:test()">और एक कोड क्षेत्र कहा जाता है<code id="testArea"></code>

मैं इस कोड का उपयोग कोड क्षेत्र में डेटा को कड़ा करने और प्रदर्शित करने के लिए कर रहा हूं:

var formData = form2object('testForm');
document.getElementById('testArea').innerHTML = JSON.stringify(formData, null, '\t');
var value = JSON.stringify(formData, null, '\t');

मुझे जो चाहिए वह इस डेटा को JSON फ़ाइल में भेजना है। मैं इस प्रोजेक्ट पर काम कर रहा हूं: http://ridegrab.com/profile_old/ और यदि आप Submit Queryबटन दबाते हैं तो आपको पेज का सिर आबाद दिखेगा।

इसके अलावा मैं डेटा भेजने के लिए स्क्रिप्ट के इस टुकड़े का उपयोग करना चाहता हूं:

    function authenticate(userName, password) {
    $.ajax
    ({
        type: "POST",
        //the url where you want to sent the userName and password to
        url: 'username:password@link to the server/update',
        dataType: 'json',
        async: false,
        //json object to sent to the authentication url
        data: '{"userName": "' + userName + '", "password" : "' + password + '"}',
        success: function () {

        alert("Thanks!"); 
        }
    })
}

फिर से, मैं चाहता हूं कि सर्वर पर उस JSON डेटा को भेजने में सक्षम हो। मेरा सर्वर update or POSTसही जगह पर डेटा के लिए सेट है।


मैं इसे काम नहीं कर सकता :) मुझे नहीं पता कि उन्हें सर्वर पर भेजने के लिए उन्हें एक साथ कैसे रखा जाए ... भले ही मैं उसके dataसाथ data: value,बदलूं ... ??
देशभक्तिपूर्ण

सबसे पहले, क्या आप निश्चित हैं कि यह एक कनेक्शन मुद्दा नहीं है? यदि आप एक errorफ़ंक्शन असाइन करते हैं, तो क्या इसे कॉल किया जाता है? यदि हां, तो किस त्रुटि के साथ?
वाइजगू

1
हालांकि यह एक साल से अधिक पुराना है, लेकिन मैं जवाब दूंगा @ Patrioticcow के नवीनतम प्रश्न के बारे में कि कैसे करना है। आप "सफलता" विकल्प देखते हैं जिसे आपने ajax विधि में भेजा है? "त्रुटि" के साथ एक ही काम करें। "त्रुटि: MyErrorHandlingFunction" या "त्रुटि: फ़ंक्शन (त्रुटि) {[त्रुटि हैंडलिंग कोड यहाँ]} में" के रूप में
vbullinger

जवाबों:


219

'डेटा' एक कठोर जावास्क्रिप्ट ऑब्जेक्ट होना चाहिए:

data: JSON.stringify({ "userName": userName, "password" : password })

अपना भेजने के लिए formData, इसे पास करें stringify:

data: JSON.stringify(formData)

कुछ सर्वरों को भी application/jsonसामग्री प्रकार की आवश्यकता होती है :

contentType: 'application/json'

इसी तरह के सवाल का एक और विस्तृत जवाब यहां भी है: जेक्वेरी अजाक्स पोस्टिंग जोंस टू वेब्स सर्विस


@ टटोस मुझे लगता है कि यह वही है जिसके बाद आप हैं: stackoverflow.com/questions/5806971/…
काइल वाइल्ड

यहाँ गलतियाँ प्रतिध्वनित; यह साधारण परिदृश्यों के लिए ठीक काम करेगा, लेकिन विशेष रूप से सामग्री के सरणियों के लिए url- एन्कोडेड संदेश बहुत समस्याग्रस्त हो सकता है।
एफएमएम

@ एफएमएम और जोनास एन - क्या आप लोग मुझे यह पता लगाने में मदद कर सकते हैं कि शुद्धता के लिए मेरे जवाब को कैसे अपडेट किया जाए? JQuery के डॉक्स में उदाहरण (यहां: api.jquery.com/jQuery.post ) यह ऐसा प्रतीत होता है जैसे आप या तो एक जेएस ऑब्जेक्ट या एक स्ट्रिंग पोस्ट कर सकते हैं, जिससे मुझे विश्वास हो गया कि jQuery सभी आवश्यक स्ट्रिंग क्रमांकन संभाल लेगा। ।
काइल वाइल्ड

पैट्रियोटिक जेकब ने कहा: "क्या होगा अगर मैं वेरन से मान भेजना चाहता हूं" जब तक मान एक सरणी या ऑब्जेक्ट नहीं है यह वैध JSON नहीं है।
14:21

1
उदाहरण के लिए, उदाहरण के लिए, चीजों की सूची: क्या होता है, इस पर विचार करें { foo: [1,2,3], bar: 'baz' }। यह फॉर्म-एनकोडेड के रूप में मिलेगा foo%5B%5D=1&foo%5B%5D=2&foo%5B%5D=3&bar=baz(unescaped, it foo[]=1&foo[]=2&foo[]=3&bar=baz)। संभवतः नहीं कि आप सर्वर-साइड चाहते हैं।
FMM

270

आप इस तरह से JSON पोस्ट करें

$.ajax(url, {
    data : JSON.stringify(myJSObject),
    contentType : 'application/json',
    type : 'POST',
    ...

यदि आप किसी ऑब्जेक्ट को settings.data के रूप में पास करते हैं, तो jQuery इसे क्वेरी पैरामीटर में बदल देगा और डेटा प्रकार एप्लिकेशन / x-www-form-urlencoded के साथ डिफ़ॉल्ट रूप से भेज देगा; charset = UTF-8, शायद वह नहीं जो आप चाहते हैं


@ टिमवेलवेल-स्मिथ को कोई फर्क नहीं पड़ेगा क्योंकि jQuery dataकिसी भी मामले में एक स्ट्रिंग की प्रक्रिया नहीं करेगा
फिल

2

यदि आप इस पोस्ट अनुरोध को क्रॉस डोमेन में भेज रहे हैं, तो आपको इस लिंक को देखना चाहिए।

https://stackoverflow.com/a/1320708/969984

आपका सर्वर क्रॉस साइट पोस्ट अनुरोध को स्वीकार नहीं कर रहा है। तो सर्वर कॉन्फ़िगरेशन को क्रॉस साइट अनुरोधों को अनुमति देने के लिए बदलना होगा।

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