Wil*_*var 6 javascript ajax jquery function
我有以下javascript函数,其中包含一些jquery.当我调用createAppointmentConfirm函数时,它会尝试调用SendMail(id)函数,但会抛出一个错误:
"Microsoft JScript运行时错误:预期的功能"
Firefox调试器抛出一个错误:
SendMail不是一个函数[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");
}
});
}
Run Code Online (Sandbox Code Playgroud)
Sha*_*ter 11
哦,小伙子,我喜欢这些问题,主要是因为我做了一些研究和示例代码!:)
所以,首先,让我们解释你的代码发生了什么.
您的代码在技术上没有任何问题,只是您遇到了命名冲突,或者您尝试调用的函数超出了调用它们的范围.它也可能是你链接两个单独的javascript文件,其中一个没有在运行时正确链接,可能是因为拼写错误.
以下是一些有关这些问题的文章:
这是一个调试指南,更准确地说,请查看标题Runtime error messages子标题下方的底部
xyz is not defined
xyz未定义
当您的JavaScript代码引用不存在的变量或对象时,会发生此错误.例如,您将收到以下错误.(请注意,分配的变量是Test,而与alert方法一起使用的变量是Text.)Run Code Online (Sandbox Code Playgroud)var Test="This is a test; alert (Text);另一个常见的错误是在引用变量和对象时使用错误的大小写.即使您已正确拼写变量名称,此代码也会导致错误:
Run Code Online (Sandbox Code Playgroud)var Test="This is a test; alert (test);
或者,因为他们没有提到:你可能已经声明了一个函数和一个变量,两者都有相同的名称.
当您按下HTML面板中的"go"提交按钮时,JSFiddle中的以下示例将触发错误/运行代码.
解决方案非常适合您.你没有发布完整的代码,所以我无法真正帮助你发现确切的地方.
如果我猜一下,我会说你已经在某个地方用名称声明了一个变量SendMail,并且该脚本假定你指的是那个.
我创建了一个在JSFiddle中发生命名冲突的示例.
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>");
}
Run Code Online (Sandbox Code Playgroud)
在这里,我正在尝试调用该SendDebugMessage()函数,
但是当我调用它时我有点粗心,并且添加了s它就变成了SendDebugMessages().
Whops.
它也可以与对象和变量一起发生.你只是不知道它来自哪里.
当然,您需要做的就是将其更改回正确的函数名称
这是一个我认为代表你的问题的例子,一个函数和一个共享相同名称的变量.
var SendDebugMessage = "something";
function SendDebugMessage(msg){
$("#debug").prepend("<div>"+msg+"</div>");
}
Run Code Online (Sandbox Code Playgroud)
一种简单的修复方法:更改其中一个名称.