2011-12-30 19 views
6

मेरे पास कुछ jquery के साथ निम्न जावास्क्रिप्ट फ़ंक्शन है। जब मैं createAppointmentConfirm फोन समारोह, यह SendMail (आईडी) समारोह कॉल करने के लिए कोशिश करता है लेकिन एक त्रुटि फेंकता है:माइक्रोसॉफ्ट जेस्क्रिप्ट रनटाइम त्रुटि: फंक्शन अपेक्षित

"Microsoft JScript runtime error: Function expected"

और फ़ायरफ़ॉक्स डिबगर एक त्रुटि फेंकता है:

SendMail is not a function [Break On This Error] SendMail(data.Message);

यहाँ है कोड। आपके सहयोग के लिए धन्यवाद।

function createAppointmentConfirm(data) { 
    if (data.Error) { 
     alert(data.Message); 
    } else { 
     if ($('#sendMail').attr('checked') == 'checked') { 
      SendMail(data.Message); 
     } 
     RefreshAppointmentList(); 
    } 
} 
function SendMail(id) { 
    $.ajax({ 
     url: $('#sendMail').attr('title'), 
     data: { id: id }, 
     type: "POST", 
     beforeSend: function() { 
      $('#sendingMail').dialog({ modal: true }); 
     }, 
     success: function (data) { 
      if (data.Error) { 
       alert(data.Message); 
      } 
      $('#sendingMail').dialog("close"); 
     }, 
     error: function() { 
      alert("Error sending mail"); 
      $('#sendingMail').dialog("close"); 
     } 
    }); 
} 
+1

यह इस के लिए एक [jsFiddle] (http://jsfiddle.net/) स्थापित करने के लिए संभव है? – jabclab

+1

यदि आप अपने जेएस में कहीं भी एक बंद ब्रैकेट याद करते हैं, तो आपको यह मिल सकता है .. क्या आप अपने पूरे जेएस को किसी भी लापता ब्रैकेट के लिए देख सकते हैं .. या पूरे जेएस –

+0

पोस्ट करने का प्रयास करें, ये दोनों कार्य पृष्ठ पर कहां हैं? या वे जेएस फाइलों का हिस्सा हैं? – ShankarSangoli

उत्तर

11

स्पष्टीकरण

ओह लड़का है, मैं सवाल इस तरह से प्यार है, ज्यादातर क्योंकि मैं कुछ शोध और उदाहरण कोड करने के लिए मिलता है! :)

तो, सबसे पहले, आइए बताएं कि आपके कोड के साथ क्या चल रहा है।

कुछ भी नहीं है तकनीकी रूप से आपके कोड के साथ गलत है, यह सिर्फ इतना है कि आपको या तो नामकरण विवाद मिल गया है या जिन कार्यों को आप कॉल करने का प्रयास कर रहे हैं वे उन्हें कॉल करने वाले दायरे से बाहर हैं। यह भी हो सकता है कि आप दो अलग जावास्क्रिप्ट फ़ाइलों को जोड़ रहे हैं, और उनमें से एक रनटाइम पर ठीक से जुड़ा हुआ नहीं है, शायद वर्तनी त्रुटि के कारण।

यहाँ मुद्दों के बारे में कुछ लेख हैं:

Here's a debugging guide, और अधिक सटीक होना करने के लिए, शीर्षक Runtime error messages उपशीर्षक के तहत एक नीचे नीचे देखो ले xyz is not defined

xyz is not defined
This error occurs when your JavaScript code references a variable or object that does not exist. For example, you get the error with the following. (Note that the assigned variable is Test, whereas the variable used with the alert method is Text.)

var Test="This is a test; alert (Text); 

Another common mistake is to use the wrong capitalization when referring to variables and objects. This code results in an error, even though you have spelled the variable name correctly:

var Test="This is a test; alert (test); 

या, जैसा कि वे उल्लेख करने में विफल रहते हैं: आपने एक ही नाम के साथ एक फ़ंक्शन और एक चर घोषित कर दिया होगा।


समाधान

JSFiddle में निम्न उदाहरण त्रुटियों/कोड चलाने ट्रिगर किया जाएगा जब आप HTML कक्ष में "जाओ" प्रस्तुत बटन दबाएँ।

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

यदि मैं अनुमान लगाता हूं, तो मैं कहूंगा कि आपने SendMail नाम के साथ कहीं एक चर घोषित कर दिया है, और स्क्रिप्ट मानती है कि आप इसका जिक्र कर रहे हैं।

मैंने एक उदाहरण बनाया है जहां JSFiddle में नामकरण संघर्ष होता है।

Naming conflict example

function SendMail(iId) { 
    //Send the mail information to a server page that will pass it along 
    //For this example, we'll pretend it returned an object 

    var oReturned = { 
     "Error": null, 
     "Message": "Mail has been sent." 
    }; 
    SendDebugMessages(oReturned.Message); 
} 


function SendDebugMessage(msg){ 
    $("#debug").prepend("<div>"+msg+"</div>"); 
} 

यहाँ, मैं, SendDebugMessage() समारोह कॉल करने के लिए
कोशिश कर रहा हूँ, लेकिन जब मैं इसे कहा जाता है, और एक s जोड़ा मैं थोड़ा लापरवाह था तो यह SendDebugMessages() बन गया।
वूप्स।

यह ऑब्जेक्ट्स और चर के साथ भी हो सकता है। आप बस यह नहीं जान पाएंगे कि यह कहां से आ रहा है।

बेशक

, तुम सब इसे सुलझाने के लिए क्या करने की जरूरत है, सही समारोह नाम

Here's an example मुझे लगता है कि आपकी समस्या, एक समारोह और एक चर एक ही नाम साझा करने का प्रतिनिधित्व करता है के लिए इसे वापस बदलने के लिए है।

var SendDebugMessage = "something"; 

function SendDebugMessage(msg){ 
    $("#debug").prepend("<div>"+msg+"</div>"); 
} 

एक सीधा फिक्स प्रकार: उनमें से एक पर नाम बदलें।

Here's a working example, without any errors..

+1

ओह लड़का, मुझे इस तरह के जवाब पसंद हैं! अच्छा शोध – DanM7

+0

यह उत्तर मुझे यह जानने में मदद करने में आसान रहा कि मैंने पैरामीटर द्वारा एक फ़ंक्शन में एक सरणी लाई है, फिर एक नॉकआउट को "स्वयं" द्वारा योग्य नाम के साथ देखा जा सकता है और उसके बाद केओ उपयोग फ़ंक्शन चलाने की कोशिश की केओ देखने योग्य संस्करण के बजाय पैरामीटर सरणी। – bubbleking

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

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