2009-02-24 11 views
32

jQuery 1.3.2, ASP.NET 2.0 देता है। एक पृष्ठ विधि (WebMethod) पर AJAX कॉल करना केवल प्रतिक्रिया के बजाय पूर्ण/संपूर्ण पृष्ठ देता है। पेज विधि पर एक ब्रेकपॉइंट दिखाता है कि यह कभी हिट नहीं हो रहा है। मेरे पास मेरी विधि पर [WebMethod] विशेषता है, और यह सार्वजनिक स्थिर है, स्ट्रिंग देता है और कोई पैरा स्वीकार नहीं करता है। मैंने अपनी कक्षा के शीर्ष पर [स्क्रिप्ट सेवा] जोड़ने की भी कोशिश की ताकि यह देखने में मदद की जा सके कि यह मददगार है, लेकिन ऐसा नहीं हुआ।jQuery के साथ ASP.NET पृष्ठ विधि/वेबमाइडर पर कॉल करें - पूरे पृष्ठ को

मैं इस पोस्ट Jquery AJAX with ASP.NET WebMethod Returning Entire Page जो मेरे एक ही लक्षण था देखा है, लेकिन मैं अभी भी समस्या हो रही है। मैंने http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/ पढ़ा और मुझे लगता है कि मैं टी को इसका पालन कर रहा हूं, लेकिन अभी भी कोई भाग्य नहीं है।

jQuery कॉल मैं बना रहा हूं है:

jQuery.ajax({ 
    type: 'POST', 
    contentType: 'application/json; charset=utf-8', 
    data: '{}', 
    dataType: 'json', 
    url: 'MyPage.aspx/SomePageMethod', 
    success: function(result){ 
     alert(result); 
    } 
}); 

अनुरोध/प्रतिक्रिया हेडर, प्रति FF3 में Firebug के रूप में, के रूप में

Response Headers 
Server ASP.NET Development Server/8.0.0.0 
Date Tue, 24 Feb 2009 18:58:27 GMT 
X-AspNet-Version 2.0.50727 
Cache-Control private 
Content-Type text/html; charset=utf-8 
Content-Length 108558 
Connection Close 

Request Headers 
Host localhost:2624 
User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 
Accept application/json, text/javascript, */* 
Accept-Language en-us,en;q=0.5 
Accept-Encoding gzip,deflate 
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive 300 
Connection keep-alive 
Content-Type application/json; charset=utf-8 
X-Requested-With XMLHttpRequest 
Referer http://localhost:2624/MyApp/MyPage.aspx 
Content-Length 2 
Cookie ASP.NET_SessionId=g1idhx55b5awyi55fvorj055; 

मैं करने के लिए एक ScriptManager जोड़ दिया है इस प्रकार हैं मेरे पेज सिर्फ यह देखने के लिए कि क्या यह मदद करता है, लेकिन वहां कोई भाग्य नहीं है।

कोई सुझाव?

उत्तर

27

क्या आप जानते हैं कि पेज विधि ठीक से काम कर रहे हैं? यदि आप स्क्रिप्ट मैनेजर का उपयोग करते हैं तो क्या वे काम करते हैं?

ऐसा लगता है कि आप a web.config entry छूटे हुए हों। विशेष रूप से HttpModules खंड।

+0

डांगिट! मुझे पता था कि यह कुछ आसान होने जा रहा था। मुझे लगता है कि मैंने माना है कि किसी भी कॉन्फ़िगरेशन की आवश्यकता होगी जब मैंने स्क्रिप्ट मैनेजर में गिरा दिया था (यही कारण है कि मैंने इसे जोड़ा, क्योंकि मुझे पता था कि आपको इसकी आवश्यकता नहीं है। धन्यवाद! – Matt

+1

इस पर शोध कर रहे थे एक घंटे के लिए समस्या + और web.config और स्क्रिप्ट मॉड्यूल httpModule अपराधी होने के समाप्त हो गया। धन्यवाद! –

+2

हाय डेव। प्रति @ सुर्य, यह लिंक अब और काम नहीं कर रहा है। – Matt

0

अधिकांश ajax परिदृश्यों मैं वास्तव में देखा है एक वेब सेवा या अलग स्क्रिप्ट हैंडलर, न कि एक पेज बुलाना चाहिए। .NET 3-5 में करना बेहद आसान है, 2-0 में इतना आसान नहीं है। यहां तक ​​कि अगर आप पूरे पृष्ठ को लोड नहीं करना चाहते हैं, तो यहां तक ​​कि पृष्ठ विधि को कॉल न करने के कारण यहां दिए गए हैं:

1) पृष्ठ विधि पूर्ण पृष्ठ लोड से कम सामान लोड कर सकती है, लेकिन अभी भी कहीं अधिक है आपको एक साधारण AJAX कॉल की आवश्यकता है। 2) जिम्मेदारियों के लुसी अलगाव। पेज शायद अजीब तरीके से सामान का उपयोग करने के लिए ज़िम्मेदार है, न कि तर्क जो आप AJAX विधि में उपयोग कर रहे हैं।
3) शायद आपको कुछ सत्र स्थिति की आवश्यकता है, लेकिन यह अभी भी उपलब्ध होना चाहिए।

मैं वर्तमान में इस विषय पर मेरी जानकारी को अद्यतन करने कर रहा हूँ ... मैं इस सूत्र में इस सवाल का एक अच्छा जवाब के लिए गौर करेंगे, या मैं एक अगले हफ्ते पोस्ट करेंगे। यहाँ दिशा मैं अध्यक्षता कर रहा हूँ

1) ग्राहक के लिए सर्वर से JSON भेजें, और जावास्क्रिप्ट का उपयोग अपने पृष्ठ को अद्यतन करने के लिए है। - विभिन्न प्रकार के ढांचे वेब सर्वर से जेएसओएन का उत्पादन करना आसान बनाते हैं।
2) JQuery दर्दनाक के बजाय AJAX कॉल, जेसन हैंडलिंग, और क्लाइंट स्वरूपण मज़ा बनाता है।

+0

यही एक "पृष्ठ विधि" है। यह बस है जेएसओएन लौटने वाली एक वेब सेवा लिखने का एक सुविधाजनक तरीका। –

+0

1) यह अभी भी एक एसिंक जावास्क्रिप्ट कॉल है। एक पृष्ठ विधि, जिसे आपके कोड में वेबमाइट विशेषता के साथ सजाए गए सार्वजनिक स्थैतिक विधि के रूप में भी जाना जाता है, कोड से प्रतिक्रिया के साथ उस पते के खिलाफ POST अनुरोधों का जवाब देने के लिए एएसपी.NET को बताने के लिए सिंटैक्टिक चीनी है। – Matt

+0

(cont) प्रतिक्रिया अभी भी JSON है, और बहुत छोटी है। कोई व्यूस्टेट नहीं, यहां तक ​​कि। 2) आप कैसे जानते हैं कि पेज विधि में मैं किस तर्क का उपयोग कर रहा हूं? मेरे मामले में, यह केवल उस डेटा को पकड़ रहा है जो वास्तव में इस पृष्ठ के लिए विशिष्ट है, लेकिन पृष्ठ लोड होने पर उपलब्ध नहीं था। 3) मुझे सत्र की आवश्यकता नहीं थी, लेकिन – Matt

23

मैं अपने web.config से एक पंक्ति याद आ रही थी:

<system.web> 
    <httpModules> 
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 
    </httpModules> 
</system.web> 
+9

एडम सेब्रिज है, जहां आप अब भी हैं, मैं तुमसे प्यार करता हूं। –

+0

यह समाधान एक नई त्रुटि प्रस्तुत करता है: HTTP त्रुटि 500.22 - आंतरिक सर्वर त्रुटि –

13

मैं एक अलग कारण के लिए इस समस्या को आज फिर सामना करना पड़ा: मैं

contentType: 'application/json' 

में "आवेदन" गलत वर्तनी था और हो रही थी WebMethod को कॉल के बजाए एक पूर्ण-पृष्ठ प्रतिक्रिया।

+0

मेरे लिए भी आवेदन की गलत वर्तनी। पारितोषिक के लिए धन्यवाद। –

1

यह एक पक्ष टिप्पणी को यहां फेंकने।मुझे अपनी एचटीएमएल स्ट्रिंग में मेरी स्ट्रिंग वेरिएबल्स की लंबाई के कारण यह त्रुटि मिल रही थी और जिस वेबसाइट को मैं अपना एजेक्स कहता था, उसे इस तरह दिखता था।

loc = (loc.substr(loc.length - 1, 1) == "/") ? loc + "Default.aspx" : loc; 
     $.ajax({ 
      type: "POST", 
      url: loc + "/" + methodName, 
      data: "{" + args + "}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: onSuccess, 
      error: onFail 
     }); 

यह .aspx लिंक सही ढंग से निकालने में सक्षम नहीं था, इसलिए मैं सिर्फ loc वर उपयोग करने के बजाय अपने वेबपृष्ठ hardcoded।

3

यदि आपने यह सब कोशिश की है और अभी भी पूरा पृष्ठ आपके पृष्ठ विधि से लौटा है, तो आप यह सुनिश्चित करना चाहते हैं कि आप दोस्ताना यूआरएल का उपयोग नहीं कर रहे हैं। लगभग दो घंटे के बाद

PageMethods.set_path(PageMethods.get_path() + '.aspx'); 
0

और बाद सब कुछ मैं आखिर में इसे हल की कोशिश की थी: आप उन्हें प्रयोग कर रहे हैं, इस चाल में मदद मिल सकती इससे पहले कि आप कॉल कर आप

अपने js स्क्रिप्ट पर इस लाइन में जोड़ें। @ मारविन जुम्बाडो की टिप्पणी ने मेरी मदद की। मैं अपने यूआरएल से .aspx खो रहा था। मुझे पता है कि यह प्रोग्रामर के रूप में मेरा सबसे अच्छा क्षण नहीं है!

संबंधित मुद्दे