Javascript 如何在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

我想给jQuery中的变量分配一个返回值(只是文本)。我写道:

 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没有发布所有代码,也没有说未定义的代码发生在哪里