2008-12-08 7 views
36

मैं JQuery AJAX का उपयोग कर एएसपी.NET वेबमाइडर को कॉल करने के लिए कुछ सरल परीक्षण (एक बड़ी परियोजना की तैयारी में) कर रहा हूं। मेरे उदाहरण में, मेरा वेबमाइडर एक साधारण स्ट्रिंग देता है। हालांकि, जब मैं JQuery का उपयोग करके इसे कॉल करने का प्रयास करता हूं, तो मुझे केवल मेरी स्ट्रिंग के बजाय संपूर्ण HTML पृष्ठ सामग्री लौटा दी जाती है। मैं क्या खो रहा हूँ?एएसपी.नेट वेबमेडिंग रिटर्निंग के साथ Jquery AJAX संपूर्ण पृष्ठ

क्लाइंट साइड:

$(document).ready(function ready() { 
     $("#MyButton").click(function clicked(e) { 
      $.post("Default.aspx/TestMethod", 
       {name:"Bob"}, 
       function(msg) { 
        alert("Data Recieved: " + msg); 
       }, 
       "html" 
      ); 
     }); 
    }); 

सर्वर साइड:

using System; 
using System.Web.Services; 

namespace JqueryAjaxText 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 

     [WebMethod] 
     public static string TestMethod(string name) 
     { 
      return "The value submitted was " + name; 
     } 
    } 
} 

उत्तर

18

इस लिंक को देखें। मैंने सफलता के साथ डब्ल्यूसीएफ सेवा को कॉल करने के लिए अपनी कुछ अन्य पोस्टों का उपयोग किया।

http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/

लेख के माध्यम से पढ़ें लेकिन इसकी अनिवार्य:

$("#Result").click(function() { 
    $.ajax({ 
     type: "POST", 
     url: "Default.aspx/GetDate", 
     data: "{}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(msg) { 
     $("#Result").text(msg.d); 
     } 
    }); 
}); 
+3

सुनिश्चित करें कि आपके web.config कुछ इस के बराबर, अपने संस्करण के आधार पर होता है बनाओ: '<विन्यास> \t \t \t \t \t \t \t \t \t <नाम =" ScriptModule "type =" System.Web जोड़ें। Handlers.ScriptModule, System.Web.Extensions, संस्करण = 3.5.0.0, संस्कृति = तटस्थ, PublicKeyToken = 31BF3856AD364E35 "/> \t \t \t \t \t \t ' – Nathan

+1

इसका मुख्य भाग लाइन सामग्री है टाइप:" एप्लिकेशन/जेसन; charset = utf-8 "उस पंक्ति के बिना यह HTML वापस कर देगा। –

3

"पाठ" करने के लिए पिछले पैरामीटर "html" बदलने का प्रयास करें। यह पैरामीटर लौटाए जाने वाले डेटा के प्रकार को निर्दिष्ट करता है।

+0

समस्या है करने के लिए, विधि कभी नहीं कहा जाता है। AJAX कॉल बस पूरे पृष्ठ को प्राप्त कर रहा है, जैसे ब्राउज़र इसे देखेगा। – Dana

+2

क्या आप "html" को "टेक्स्ट" में बदलने का प्रयास कर सकते हैं। –

8

मैं मैं JQuery के $ .post में "प्रकार" पैरामीटर के साथ भ्रमित मिल रही थी, लगता है संबंधित लेख की जाँच करना न भूलें आदेश। कुछ लोगों से बात करने के बाद, ऐसा लगता है कि वेबमाइडर को कॉल करने के लिए वापसी का प्रकार "जेसन" होना चाहिए। मैं "एचटीएमएल" का उपयोग करने की कोशिश कर रहा था। एक बार मैंने इसे "जेसन" में बदल दिया और फिर सबकुछ सामान्य की तरह काम करता था। तो जाहिर है, [WebMethod] के साथ सजाए गए एक विधि केवल JSON लौटाता है, और यही वह जगह है जहां मेरा hangup था।

आपके उत्तरों के लिए धन्यवाद।

+0

हाँ, यह मुझे भी मिल रहा था। जानकारी के लिए धन्यवाद! – Jagd

0

मुझे बिल्कुल वही समस्या थी: WebMethod ने पूरे HTML पृष्ठ को इच्छित डेटा के बजाय वापस कर दिया। मेरे लिए, समाधान के अंदर ~/App_Start/RouteConfig.cs निम्न पंक्ति को परिवर्तित करने से आया था:

settings.AutoRedirectMode = RedirectMode.Permanent; 

settings.AutoRedirectMode = RedirectMode.Off; 
संबंधित मुद्दे