2012-05-18 27 views
9

हाय मैं जावास्क्रिप्ट से एक साधारण पृष्ठ विधि बोल रहा हूँ, यहाँ मार्कअपकॉलिंग asp.net पृष्ठ विधि से जावास्क्रिप्ट काम नहीं कर रहा

function OnCallSumComplete(result, userContext, methodName) {    
      alert(result); 
} 
function OnCallSumError(error, userContext, methodName) { 
    if (error !== null) { 
     alert(error.get_message()); 
    } 
} 
function test(){ 
    var contextArray = ""; 
    PageMethods.TestMethod("test parameter", OnCallSumComplete, OnCallSumError, contextArray); 
} 

<asp:ScriptManager ID="ScriptManager1" EnablePageMethods="true" runat="server" /> 

पर अपने कोड सीएस

[System.Web.Services.WebMethod] 
public static string TestMethod(string para) 
{ 

    return "Yes this is working"; 
} 

चेतावनी शो में है परिणाम और यह "शून्य" कहता है। मैं फायरबग की जांच करता हूं और मुझे कंसोल से त्रुटि दिखाई नहीं देती है।

तो मैं

PageMethods.TestMethod(function (response) { alert(response); }); 

को

[System.Web.Services.WebMethod] 
public static string TestMethod() 
{ 
    return "Yes this is working"; 
} 

और PageMethod को TestMethod बदल यह रूप में "हाँ यह काम कर रहा है" सही जवाब पता चलता है। हालांकि, मुझे फ़ंक्शन में पैरामीटर पास करने की आवश्यकता है। क्या मुझे कुछ याद आती है?

सहायता के लिए धन्यवाद।

उत्तर

2

मुझे लगता है कि जावास्क्रिप्ट कॉल के माध्यम से एएसएमएक्स विधियों को उपलब्ध कराने के लिए आपको [WebMethod] के बजाय या [WebMethod] के अतिरिक्त [ScriptMethod] का उपयोग करना होगा। पैरामीटर लेने के बिना यह क्यों काम कर सकता है क्योंकि विधि को संसाधित करने के लिए अनुरोध को कुछ भी पार्स करने की आवश्यकता नहीं है।

इसे अपनी स्क्रिप्ट परिभाषा पर [ScriptMethod] (और संभवतः [ScriptService] के साथ आज़माएं) और देखें कि इससे कोई फर्क पड़ता है या नहीं।

+0

हाय मैंने इसे [System.Web.Script.Services.ScriptMethod] के साथ करने की कोशिश की लेकिन मुझे फायरबग कंसोल में "पेजमाइड्स परिभाषित नहीं किया गया" त्रुटि मिली। – windforceus

+0

क्या आपने स्क्रिप्ट सेवा भी जोड़ दी थी? यदि कक्षा अब और परिभाषित नहीं है, तो ऐसा इसलिए है क्योंकि क्लास इंटरफ़ेस को परिभाषित करने वाली जावास्क्रिप्ट फ़ाइल लोड नहीं हो रही है। नेटवर्क टैब को देखने का प्रयास करें और देखें कि क्या आपके लिए कुछ भी 404 है। – RTigger

+0

मुझे संकलन त्रुटि मिली है। "विशेषता 'System.Web.Script.Services.ScriptService' इस घोषणा प्रकार पर मान्य नहीं है। यह केवल 'कक्षा, इंटरफ़ेस' घोषणाओं पर मान्य है।\t " – windforceus

0

जो मुझे याद है, आपको बस अपने कॉल में 3 पैरा चाहिए (आपका परम, असफलता और असफलता)। क्या आपने पेज मैथ्यूज का उपयोग करने का प्रयास किया था। टेस्टमैथ ("टेस्ट पैरामीटर", ऑनकॉलसम कॉम्प्ले, ऑनकॉलसमरर);

+0

हां, मैंने किया, लेकिन अभी भी "शून्य" संदेश। जवाब के लिए धन्यवाद। – windforceus

3

मुझे लगता है कि मुख्य समस्या स्क्रिप्ट मैनेजर के लिए उपयोग की जा रही असेंबली के साथ है।

<asp:ScriptManager ID="ScriptManager1" 
        EnablePageMethods="true" 
        runat="server" /> 

Webconfig में अपनी समस्या को हल करने के उपयोग -

<pages> 
    <controls> 
    <add tagPrefix="ajax" 
     namespace="System.Web.UI" 
     assembly="System.Web.Extensions, 
        Version=1.0.61025.0, 
        Culture=neutral, 
        PublicKeyToken=31bf3856ad364e35"/> 
    </controls> 
</pages> 

और लाइनों निम्नलिखित अपने .aspx पेज प्रयोग में -

<ajax:ScriptManager ID="ScriptManager1" 
        EnablePageMethods="true" 
        runat="server" /> 

आशा इस तुम्हारी मदद करेगा आपकी समस्या का समाधान करने के लिए।

1

समस्या यह है कि आपके Web.config पर आपको एक मॉड्यूल (IHttpModule) सक्षम होना चाहिए: ScriptModule-4.0। यह डिफ़ॉल्ट रूप से सक्षम है, लेकिन आपने इसे हटा दिया होगा। मशीन-व्यापी Web.config फ़ाइल में इसकी तलाश करें, अगर आप उत्सुक हैं, और देखें कि इसे आपके स्थानीय Web.config से हटा दिया गया था या नहीं। इसकी घोषणा System.web सर्वर/मॉड्यूल (आईआईएस> = 7 के लिए) और system.web/httpModules विजुअल स्टूडियो के अंतर्निर्मित वेब सर्वर या आईआईएस < 7.

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