दिलचस्प पोस्ट
EXISTS बनाम जोड़ और मौजूदा खंड का उपयोग कैसे एक goroutine को रोकने के लिए SQL में कोई उत्पाद समेकित कार्य क्यों नहीं है? संकेतक के सरणी / सर के लिए सी पॉन्टर पोस्ट मापदंडों के साथ एंड्रॉइड में एचटीटीपी क्लाइंट और एचटीटीपी पोस्ट का उपयोग करना वैश्विक और वर्ग स्थिर चर के लिए सी + + कॉल डिस्ट्रक्टर्स क्या है? एंड्रॉइड: वापस बटन दबाए जाने पर परिवर्तन सहेजने के लिए उपयोगकर्ता को संकेत दें सी # में एक UserControl पाठ संपत्ति एंड्रॉइड: सूची निर्माण पर सूची आइटम को अक्षम कैसे करें सीमाके में शामिल नहीं / पुस्तकालय शामिल हैं स्थापना पर एंड्रॉइड सेवा कैसे आरंभ करें पायथन अनुरोध मॉड्यूल को छोड़कर / कोशिश करने का सही तरीका है? MYSQL – तुर्की चरित्र क्या एक डेटाबेस कनेक्शन हर समय खुला रहता है या केवल तब खोला जा सकता है जब आवश्यक हो? पायथन की मानक पुस्तकालय – क्या संतुलित द्विआधारी पेड़ के लिए एक मॉड्यूल है?

JQuery AJAX को httpget webmethod (c #) काम नहीं कर रहा है

मैं एक एजेक्स कोड के पीछे एक वेबमैथ ​​प्राप्त करने का प्रयास कर रहा हूं। समस्या यह है कि मैं jQuery के onfail विधि से "पार्सररर" त्रुटि प्राप्त कर रहा हूं।

अगर मैं पोस्ट को जीईटी बदलता हूं तो सबकुछ ठीक काम करता है कृपया नीचे अपना कोड देखें।

अजाक्स कॉल

 <script type="text/javascript"> var id = "li1234"; function AjaxGet() { $.ajax({ type: "GET", url: "webmethods.aspx/AjaxGet", data: "{ 'id' : '" + id + "'}", contentType: "application/json; charset=utf-8", dataType: "json", async: false, success: function(msg) { alert("success"); }, error: function(msg, text) { alert(text); } }); } </script> 

कोड के पीछे

 [System.Web.Services.WebMethod] [System.Web.Script.Services.ScriptMethod(UseHttpGet = true, ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)] public static string AjaxGet(string id) { return id; } 

web.config

  <webServices> <protocols> <add name="HttpGet"/> </protocols> </webServices> 

उपयोग किया जा रहा यूआरएल

…….. / webmethods.aspx / AjaxGet {% 20% 27id% 27% 20% 20% 27li1234% 27}?

प्रतिक्रिया के हिस्से के रूप में पृष्ठ वेबमॉल्ड्स के लिए html लौट रहा है।

किसी भी प्रकार की सहायता सराहनीय होगी।

वेब के समाधान से एकत्रित समाधान "JQuery AJAX को httpget webmethod (c #) काम नहीं कर रहा है"

इससे पहले कि मैं कह सकता था कि आप सबसे आसान तरीका नहीं चुनते हैं। ScriptMethods ASP.NET ScriptManager के साथ मिलकर उपयोग करना आसान है और jQuery के साथ नहीं। मैं आपको सुझाता हूं कि आप ASMX Webservice के बजाय बेहतर JSON- सक्षम डब्ल्यूसीएफ एचटीटीपी सेवाओं (बेहतर रूप से रीस्टफुल सेवा) का उपयोग करें, जिसे आप अब उपयोग करने का प्रयास करते हैं फिर भी, ग्राहक की तरफ से किसी भी माइक्रोसॉफ्ट टेक्नोलॉजीज का इस्तेमाल किए बिना कोई आपको कोड काम कर सकता है

सर्वप्रथम सर्वर पक्ष को सत्यापित करें

  1. Webmethods.aspx को webmethods.asmx का नाम बदलें।
  2. पुष्टि करें कि आपने इनसाइड ऑफ की \ और एएसएमएक्स एक्सटेंशन (स्क्रिप्टहैण्डलरफार्मेंट) के लिए एक http हंडलर भी स्थापित किया है:

     <configuration> <!-- ... --> <system.web> <webServices> <protocols> <add name="HttpGet"/> </protocols> </webServices> <httpHandlers> <!-- ... --> <add verb="*" path="*.asmx" type="System.Web.Script.Services.ScriptHandlerFactory" validate="false"/> </httpHandlers></system.web></configuration> 
  3. यह सत्यापित करें कि [ScriptService] विशेषता ([System.Web.Script.Services.ScriptService] यदि आप पूर्ण नाम पसंद करते हैं तो) System.Web.Services.WebService से विरासत में मिली अपनी कक्षा के लिए सेट करें।

अब आप सेवा का परीक्षण कर सकते हैं आप में वेब ब्राउज़र यूआरएल खोलें जैसे http: //localhost/webmethods.asmx/AjaxGet? Id = li1234 अगर आपको वापस कुछ मिलता है
<?xml version="1.0" encoding="utf-8" ?>
<string xmlns="http://tempuri.org/">li1234</string>

आप यह सुनिश्चित कर सकते हैं कि आप सेवा का हिस्सा ठीक काम करते हैं

टिप्पणी: "रिस्पांसफ़ॉर्मेट = सिस्टम पर स्वतंत्र। सिस्टम। Web.Script.Services.ResponseFormat.Json" XML जवाबों के साथ सेवा के जवाब में विशेषता देता है यदि "सामग्री-प्रकार: आवेदन / जेसन;" अनुरोध में सेट नहीं किया गया है

अब हम क्लाइंट कोड ठीक कर देंगे। मुझे उम्मीद है कि जिन कथनों पर मैं निम्नलिखित कोड में रखा था वे सभी को समझाते हैं।

एक और छोटी टिप्पणी कोड के अंतिम भाग में मैं एक और "जटिल" वेब विधि को कॉल करता हूं:

 [WebMethod] [ScriptMethod (UseHttpGet = true, ResponseFormat = ResponseFormat.Json)] public OutputData AjaxGetMore (InputData input) { return new OutputData () { id = input.id, message = "it's work!", myInt = input.myInt+1 }; } 

कहा पे

 public class OutputData { public string id { get; set; } public string message { get; set; } public int myInt { get; set; } } public class InputData { public string id { get; set; } public int myInt { get; set; } } 

अब केवल जावास्क्रिप्ट कोड जो कुछ स्थानों में उपयोग किया जाता है JSON प्लगइन, जिसे क्रॉकफोर्ड के जेसन 2। जेएस से बदला जा सकता है, अगर कोई इसे पसंद करता है

 var id = "li1234"; // version 1 - works var idAsJson = '"' + id + '"'; // string serializes in JSON format $.ajax({ type: "GET", url: "/webmethods.asmx/AjaxGet?id=" + idAsJson, contentType: "application/json; charset=utf-8", success: function(msg) { alert(msg.d); // var msg = {d: "li1234"} }, error: function(res, status) { if (status ==="error") { // errorMessage can be an object with 3 string properties: ExceptionType, Message and StackTrace var errorMessage = $.parseJSON(res.responseText); alert(errorMessage.Message); } } }); // version 2 with respect of JSON plugin $.ajax({ type: "GET", url: "/webmethods.asmx/AjaxGet?id=" + $.toJSON(id), contentType: "application/json; charset=utf-8", success: function(msg) { alert(msg.d); // var msg = {d: "li1234"} }, error: function(res, status) { if (status ==="error") { // errorMessage can be an object with 3 string properties: ExceptionType, Message and StackTrace var errorMessage = $.parseJSON(res.responseText); alert(errorMessage.Message); } } }); // version 3 where jQuery will construct URL for us $.ajax({ type: "GET", url: "/webmethods.asmx/AjaxGet", data: {id: $.toJSON(id)}, dataType: "json", contentType: "application/json; charset=utf-8", success: function(msg) { alert(msg.d); // var msg = {d: "li1234"} }, error: function(res, status) { if (status ==="error") { // errorMessage can be an object with 3 string properties: ExceptionType, Message and StackTrace var errorMessage = $.parseJSON(res.responseText); alert(errorMessage.Message); } } }); // version 4. We set "Content-Type: application/json" about our data, but we use no // not 'dataType: "json"' parameter. Then we have "Accept: */*" in the request // instead of "Accept: application/json, text/javascript, */*" before. // Everithing work OK like before. $.ajax({ type: "GET", url: "/webmethods.asmx/AjaxGet", data: {id: $.toJSON(id)}, contentType: "application/json; charset=utf-8", success: function(msg) { alert(msg.d); // var msg = {d: "li1234"} }, error: function(res, status) { if (status ==="error") { // errorMessage can be an object with 3 string properties: ExceptionType, Message and StackTrace var errorMessage = $.parseJSON(res.responseText); alert(errorMessage.Message); } } }); // version 5. If we don't place "Content-Type: application/json" in our reqest we // receive back XML (!!!) response with "HTTP/1.1 200 OK" header and // "Content-Type: text/xml; charset=utf-8" which will be placed. // How one can read in // http://weblogs.asp.net/scottgu/archive/2007/04/04/json-hijacking-and-how-asp-net-ajax-1-0-mitigates-these-attacks.aspx), // ASP.NET AJAX will not make JSON serialized of response data for // security reasons. $.ajax({ type: "GET", url: "/webmethods.asmx/AjaxGet", data: {id: $.toJSON(id)}, dataType: "json", //contentType: "application/json; charset=utf-8", success: function(msg) { alert(msg.d); // var msg = {d: "li1234"} }, error: function (res, status, ex) { // the code here will be works because of error in parsing server response if (res.status !== 200) { // if not OK // we receive exception in the next line, be var errorMessage = $.parseJSON(res.responseText); alert(errorMessage.Message); } else { alert("status=" + status + "\nex=" + ex + "\nres.status=" + res.status + "\nres.statusText=" + res.statusText + "\nres.responseText=" + res.responseText); } } }); // version 6. Send more komplex data to/from the service var myData = { id: "li1234", myInt: 100} $.ajax({ type: "GET", url: "/webmethods.asmx/AjaxGetMore", data: {input:$.toJSON(myData)}, dataType: "json", contentType: "application/json; charset=utf-8", success: function(msg) { // var msg = {__type: "Testportal.OutputData", id: "li1234", message: "it's work!", myInt:101} alert("message=" + msg.d.message + ", id=" + msg.d.id + ", myInt=" + msg.d.myInt); }, error: function(res, status) { if (status ==="error") { // errorMessage can be an object with 3 string properties: ExceptionType, Message and StackTrace var errorMessage = $.parseJSON(res.responseText); alert(errorMessage.Message); } } }); 
 //... data: { "id" : id }, //... 

डेटा एक ऑब्जेक्ट है, स्ट्रिंग नहीं है जो ऑब्जेक्ट की तरह दिखता है।

यदि आप एक स्ट्रिंग का उपयोग करते हैं, तो यह सही तरह से स्वरूपित यूआरएल क्वेरी स्ट्रिंग होना चाहिए, जैसे:

 //... data: "id=" + encodeURIComponent(id) + "&otherstuff=" + encodeURIComponent(data), //... 

मैं यहां उत्तर की तलाश में आया … दूसरों के लिए, यहां जवाब दिया गया है।

सुरक्षा कारणों से, ASP.Net AJAX पृष्ठ विधियां केवल पोस्ट अनुरोधों का समर्थन करती हैं।

( https://stackoverflow.com/a/2397521 से )

आप http://www.json.org/js.html JSON.stringify भी देख सकते हैं जहां वह पैरामीटर के रूप में एक जेसन ऑब्जेक्ट स्वीकार करता है और स्ट्रिंग लौटाता है।

VB का उपयोग करने वालों के लिए, इस तरह अपनी विधि को सजाने के लिए:

 <WebMethod()> <ScriptMethod(UseHttpGet:= True, ResponseFormat:= ResponseFormat.Json)>