gpt4 book ai didi

IF 语句中的 Javascript 对象声明

转载 作者:行者123 更新时间:2023-11-30 13:34:03 24 4
gpt4 key购买 nike

很抱歉我不知道如何描述这个标题。

基本上我使用 JQUERY/ajax 来调用 php 脚本来验证一些输入并获取一些数据。返回的数据是编码的 JSON,所以我在 JQUERY 中将数据类型设置为 JSON,它返回一个对象。

我刚刚发现,在网络连接未以预期方式响应的某些(不得不说是异常的)情况下,ajax 调用会调用 JQUERY 中的错误选项。

在大多数情况下,我会收到一条从服务器返回的错误消息,但有时出现错误并且没有从服务器端脚本发回任何 JSON。我还没有确切地找到可能引发这种网络情况的原因,但无论如何我认为我会在我还不知道的时候用 Javascript 处理它。

想法是检查是否已创建预期的对象,如果没有,则使用两个预期的属性创建它并运行对话。这样我就可以避免重复编写错误消息。节省的并不多,但我想试试这个原理。

 $.ajax({
url: 'getmetadata.php',
type: "POST",
data: entereddata,
dataType: "json",
timeout: (7000), //wait 7 seconds

error: function(data)
{
// handle errors
if(data)
{

// Do nothing error message will be issued from the data object
}else{
// no message was returned. Some other error occured.
function tempdata()
{

this.errortitle = "Error title";
this.errormessage = "Error text";
};

var data = new tempdata();
};

// issue error message
runDialogue(data.errortitle,data.errormessage);

}, //ERROR

success: function(data)
{
}; // SUCCESS
}); // AJAX

在上面的代码中,数据对象应该在“if”语句之前存在或不存在。当我到达 runDialogue();对象数据应该始终存在,以便传递 errortitle 和 errordescription 属性。

当“数据”对象存在时,没有问题。不起作用的是当“数据”对象不存在时,即如果“if”测试失败。 else 应该创建对象“数据”但没有。

我做错了什么?

最佳答案

您正在您的 else block (更具体的范围)中重新定义变量数据,因此全局范围变量仍将未定义。更改 var data = new tempdata();到

data = new tempdata(); //In the else block

所以,现在您的 ajax 调用应该如下所示:

$.ajax({
url: 'getmetadata.php',
type: "POST",
data: entereddata,
dataType: "json",
timeout: (7000), //wait 7 seconds

error: function(data)
{
// handle errors
if(data)
{

// Do nothing error message will be issued from the data object
}else{


/******************NOTE THE CHANGE HERE********************/
data = {

errortitle:"Error title",
errormessage:"Error text"
};

};

// issue error message
runDialogue(data.errortitle,data.errormessage);

}, //ERROR

success: function(data)
{
}; // SUCCESS
}); // AJAX

关于IF 语句中的 Javascript 对象声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5627102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com