Javascript 如何在jQuery中将变量分配给返回的响应
我想给jQuery中的变量分配一个返回值(只是文本)。我写道:Javascript 如何在jQuery中将变量分配给返回的响应,javascript,jquery,ajax,return,Javascript,Jquery,Ajax,Return,我想给jQuery中的变量分配一个返回值(只是文本)。我写道: var hm=22; $.ajax({ type: "GET", url: "ajax_check_match.php", dataType: "text", success:callback }); function callback(dat
var hm=22;
$.ajax({
type: "GET",
url: "ajax_check_match.php",
dataType: "text",
success:callback
});
function callback(data, status)
{
// assign ajaxed value to cm variable
cm=data;
if (hm != cm)
{
dosomething();
}
}
但每次都失败了。为什么cm变量在发送请求时一直未定义。我将php文件设置为返回1,它仍然表示未定义。我在浏览器中打开了ajax\u check\u match.php,看到“1”
我不认为使用XML或JSON有什么意义,因为一个简单的数字就足够了。还是必须使用XML/JSON
更新:至于查找未定义的结果。。。我在回调函数之后写了$(“msgbox”).append(“hm是”+hm+”和cm是+cm),cm总是返回undefined。hm是打印的22。它设置了3秒之间的间隔,所以它一直追加hm是22,cm是undefined
最新更新:我是个白痴。句号。ajax\u check\u msg.php位于错误的位置-不同的代码。我检查了错误的页面。但是请放心,我非常感谢你的建议!你肯定
22
被返回了吗?firebug显示了什么反应?我打赌这是另一回事,然后就是22
你肯定22
被返回了吗?firebug的反应是什么?我打赌如果你的PHP文件返回1
,那么它肯定是另一回事,因为hm
被设置为22,cm!=hm
总是正确的
cm
显示未定义…因为,好吧,您没有定义它。放
var cm = ''; // or something else
如果您的PHP文件返回
1
,由于hm
设置为22,cm!=hm
始终为真
cm
显示未定义…因为,好吧,您没有定义它。放
var cm = ''; // or something else
AJAX是异步发生的,这意味着回调函数在响应返回时发生,而不是按照它在代码中出现的顺序发生 您的代码按以下顺序执行:
var hm=22;
$.ajax
启动回调
函数启动因此,您不能返回
cm
,只有在回调函数运行时才会设置它。相反,请使用回调函数中的cm
调用任何需要执行的代码,这样它将在变量准备就绪时运行。AJAX异步执行,这意味着回调函数在响应返回时执行,与代码中出现的顺序不同
您的代码按以下顺序执行:
var hm=22;
$.ajax
启动回调
函数启动因此,您不能返回
cm
,只有在回调函数运行时才会设置它。相反,使用回调函数中的cm
调用任何需要执行的代码,以便在变量准备就绪时运行它。我实际上不知道jQuery,但看起来,它看起来像是您想要的“html”“作为您的数据类型。我还建议您执行alert(cm)代码>在定义它之后,查看它是什么,而不仅仅是测试它是否是一个特定的值。我实际上不知道jQuery,但看起来,您希望将“html”作为数据类型。我还建议您执行alert(cm)定义它之后,查看它是什么,而不仅仅是测试它是否是一个特定值。输出数据
,查看它是否是您期望的值。更好的是,不要设置另一个多余的变量,只要使用if(hm!=data)
hm
永远不会等于cm
或data
,因为前者是数字,后者2是字符串。需要先进行一些类型转换。输出数据
,看看它是否符合您的预期。更好的是,不要设置另一个多余的变量,只要使用if(hm!=data)
hm
永远不会等于cm
或data
,因为前者是数字,后者2是字符串。需要先进行一些类型转换。它在doSomething()
方法中未定义,或者在其他地方?在哪一行出现此错误?您是否试图从函数外部访问CM?是否确定未定义且未定义的是CM
?是的,CM始终未定义。。我甚至添加了“警报(cm)”,它是空白的。回调不总是在成功时返回数据吗?嗯,也许你应该提醒(状态+“:”+cm);-也许出于某种原因,它没有成功?它在doSomething()
方法中未定义,或者在其他地方?您在哪一行得到此错误?您是否试图从函数外部访问CM?是否确定未定义且未定义的是CM
?是的,CM始终未定义。。我甚至添加了“警报(cm)”,它是空白的。回调不总是在成功时返回数据吗?嗯,也许你应该提醒(状态+“:”+cm);-也许出于某种原因,它没有成功?那没关系。如果没有定义,变量将被放在全局范围内,这无关紧要。如果它没有定义,一个变量将被放在全局范围内。他没有返回cm,他正在测试它,如果它与hm相同,则运行其他东西。不过,你可能对hm变量有一点看法;这取决于它是否在全局范围内。他并没有试图返回任何东西,只是运行一个函数。是的,当AJAX请求完成时会调用该函数,但他当时应该仍然能够处理数据
和hm
。@crimson_penguin,@pickle-我认为OP没有发布所有代码,也没有说未定义的代码发生在哪里