JQuery के साथ GET अनुरोधों में पैरामीटर कैसे पास करें


252

मुझे jQuery Ajax अनुरोध में क्वेरी स्ट्रिंग मान कैसे पारित करना चाहिए? मैं वर्तमान में उन्हें निम्नानुसार करता हूं, लेकिन मुझे यकीन है कि एक क्लीनर तरीका है जो मुझे मैन्युअल रूप से एन्कोड करने की आवश्यकता नहीं है।

$.ajax({
    url: "ajax.aspx?ajaxid=4&UserID=" + UserID + "&EmailAddress=" + encodeURIComponent(EmailAddress),
    success: function(response) {
        //Do Something
    },
    error: function(xhr) {
        //Do Something to handle error
    }
});

मैंने ऐसे उदाहरण देखे हैं जहां क्वेरी स्ट्रिंग पैरामीटर को एक सरणी के रूप में पास किया जाता है, लेकिन इन उदाहरणों को मैंने देखा है कि $.ajax()वे मॉडल का उपयोग नहीं करते हैं , इसके बजाय वे सीधे जाते हैं $.get()। उदाहरण के लिए:

$.get("ajax.aspx", { UserID: UserID , EmailAddress: EmailAddress } );

मैं $ .ajax () प्रारूप का उपयोग करना पसंद करता हूं क्योंकि यह वह है जिसका मैं उपयोग कर रहा हूं (कोई विशेष रूप से अच्छा कारण नहीं है - सिर्फ एक व्यक्तिगत प्राथमिकता)।

09/04/2013 को संपादित करें:

मेरे प्रश्न के बंद होने के बाद (जैसा कि "टू लोकलाइज़्ड") मुझे एक संबंधित (समान) प्रश्न मिला - 3 अपवोट्स के साथ नो-कम (पहली जगह में नहीं मिलने के लिए मेरा बुरा):

POST करने के लिए jquery का उपयोग करते हुए, 'डेटा' पैरामीटर की ठीक से आपूर्ति कैसे करें?

इसने मेरे प्रश्न का पूरी तरह से उत्तर दिया, मैंने पाया कि इस तरह से पढ़ना बहुत आसान है और मुझे encodeURIComponent()URL या डेटा मूल्यों में मैन्युअल रूप से उपयोग करने की आवश्यकता नहीं है (जो कि मुझे bipen के उत्तर में स्पष्ट नहीं मिला)। ऐसा इसलिए है क्योंकि dataमान स्वचालित रूप से एन्कोडेड है $.param())। बस इस मामले में यह किसी और के लिए उपयोग किया जा सकता है, यह वह उदाहरण है जिसके साथ मैं गया था:

$.ajax({
    url: "ajax.aspx?ajaxid=4",
    data: { 
        "VarA": VarA, 
        "VarB": VarB, 
        "VarC": VarC
    },
    cache: false,
    type: "POST",
    success: function(response) {

    },
    error: function(xhr) {

    }
});

$ .get $
.ajax के

सिवाय, आपका संपादन 09/04/2013 एक पोस्ट अनुरोध है :-) लेकिन यह जाहिरा तौर पर GET के समान ही काम करता है।
आम

जवाबों:


308

Ajax के डेटा विकल्प का उपयोग करें। आप द्वारा सर्वर से डेटा वस्तु भेज सकते हैं dataajax में विकल्प और typeजो परिभाषित करता है आप कैसे यह (या तो भेज रहे हैं POSTया GET)। डिफ़ॉल्ट प्रकार GETविधि है

इसे इस्तेमाल करे

$.ajax({
  url: "ajax.aspx",
  type: "get", //send it through get method
  data: { 
    ajaxid: 4, 
    UserID: UserID, 
    EmailAddress: EmailAddress
  },
  success: function(response) {
    //Do Something
  },
  error: function(xhr) {
    //Do Something to handle error
  }
});

और आप डेटा प्राप्त कर सकते हैं (यदि आप PHP का उपयोग कर रहे हैं)

 $_GET['ajaxid'] //gives 4
 $_GET['UserID'] //gives you the sent userid

Aspx में, मेरा मानना ​​है कि यह गलत है (गलत हो सकता है)

 Request.QueryString["ajaxid"].ToString(); 

2
आप की जरूरत नहीं है encodeURIComponent। jquery आपके लिए ऐसा करेगा।
लेन

2
@ क्वॉलवलेस नोप। यह PHP (सर्वर साइड) इस बात पर निर्भर करता है कि आप कौन सी सर्व भाषा का उपयोग कर रहे हैं। PHP में यह है कि हम अनुरोध प्राप्त करने के मूल्यों को कैसे प्राप्त करते हैं।
बिपिन

1
@bipen। ठीक है। मैंने अपनी टिप्पणी को हटा दिया ताकि किसी को भ्रमित न करूं। धन्यवाद।
किर्बी एल वालेस

आपको ऑब्जेक्ट को jQuery के पैरामीटर में jQuery.param () फ़ंक्शन के साथ बदलने की आवश्यकता है, इसलिए jQuery का उपयोग करना चाहिए data:$.param({ajaxid: 4, UserID: UserID, EmailAddress: EmailAddress}), इसके बजायdata: { ajaxid: 4, UserID: UserID, EmailAddress: EmailAddress }
पावर इंजीनियरिंग

22

कॉल के dataहिस्से में अपने params रखो ajaxडॉक्स देखें । इस तरह:

$.ajax({
    url: "/TestPage.aspx",
    data: {"first": "Manu","Last":"Sharma"},
    success: function(response) {
        //Do Something
    },
    error: function(xhr) {
        //Do Something to handle error
    }
});

10

यहाँ jQuery का उपयोग कर वाक्य रचना है $.get

$.get(url, data, successCallback, datatype)

तो आपके मामले में, यह समान होगा;

var url = 'ajax.asp';
var data = { ajaxid: 4, UserID: UserID, EmailAddress: EmailAddress };
var datatype = 'jsonp';

function success(response) {
// do something here 
}

$.get('ajax.aspx', data, success, datatype)

नोट $.get आपको त्रुटि हैंडलर सेट करने का अवसर नहीं देता है। लेकिन वहाँ यह करने के लिए कई तरीके या तो का उपयोग कर रहे हैं $ .ajaxSetup () , $ .ajaxError () या एक चेनिंग .failअपने पर $.getकी तरह नीचे

$.get(url, data, success, datatype)
 .fail(function(){
})

डेटाटाइप को 'jsonp' के रूप में सेट करने का कारण ब्राउज़र की समान मूल नीति के मुद्दों के कारण होता है, लेकिन यदि आप उसी डोमेन पर अनुरोध कर रहे हैं, जहाँ आपकी जावास्क्रिप्ट को होस्ट किया गया है, तो आपको डेटाटाइप सेट के साथ ठीक होना चाहिए json

आप jQuery का उपयोग नहीं करना चाहते हैं $.getतो दस्तावेज़ देख सकेंगे के लिए $.ajaxजो अधिक लचीलेपन के लिए कमरे की अनुमति देता है


4

इसे जोड़ने का प्रयास करें:

$.ajax({
    url: "ajax.aspx",
    type:'get',
    data: {ajaxid:4, UserID: UserID , EmailAddress: encodeURIComponent(EmailAddress)},
    dataType: 'json',
    success: function(response) {
      //Do Something
    },
    error: function(xhr) {
    //Do Something to handle error
    }
});

क्या डेटाटाइप अपेक्षित है पर निर्भर करता है, आप असाइन कर सकते हैं html, json, script, xml


आपका समाधान सहायक है, लेकिन सोच IDरहा है कि पैरामीटर के रूप में इसे पारित करने से पहले चर ( ) को कैसे परिभाषित किया जाए ? मेरे पास SO, stackoverflow.com/questions/41192531/… पर Q है । मैं इस क्यू पर आगे बढ़ा, जहां अब मैं एक jquery डायलॉग कहता हूं और ajax को mysql से डेटा प्राप्त करने के लिए कॉल करता हूं। मैं कैसे प्रत्येक datapoint क्लिक के साथ जुड़े अद्वितीय आईडी पुनः प्राप्त करने के लिए लिंक याद आ रही है । सराहना करें अगर आप मेरी मदद कर सकते हैं। धन्यवाद
user5249203

1

डेटा प्रॉपर्टी आपको एक स्ट्रिंग में भेजने की अनुमति देती है। अपने सर्वर साइड कोड पर, इसे एक स्ट्रिंग तर्क नाम "myVar" के रूप में स्वीकार करें और फिर आप इसे पार्स कर सकते हैं।

$.ajax({
    url: "ajax.aspx",
    data: [myVar = {id: 4, email: 'emailaddress', myArray: [1, 2, 3]}];
    success: function(response) {
    //Do Something
    },
    error: function(xhr) {
    //Do Something to handle error
    }
});

1
तुम क्यों करोगे stringify? jQuery का ajaxकार्यान्वयन आपके लिए इसका ध्यान रखता है।
स्टीव

1

वही समस्या थी जहाँ मैंने निर्दिष्ट किया था dataलेकिन ब्राउज़र URL को समाप्त करने के लिए अनुरोध भेज रहा था [Object object]

आपको processDataसेट करना चाहिए था true

processData: true, // You should comment this out if is false or set to true

OMG, धन्यवाद। 4 घंटे की खोज और कोशिश के बाद आखिरकार यहां एक मुद्दा तय हुआ :-)
किम के।


-1

अजाक्स विधि का डेटा पैरामीटर आपको सर्वर साइड में डेटा भेजने की अनुमति देता है। सर्वर साइड से आप डेटा का अनुरोध कर सकते हैं। कोड देखें

var id=5;
$.ajax({
    type: "get",
    url: "url of server side script",
    data:{id:id},
    success: function(res){
        console.log(res);
    },
error:function(error)
{
console.log(error);
}
});

सर्वर की ओर से इसे $ _GET चर का उपयोग करके प्राप्त किया जाता है।

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