如何在jQuery中为返回的响应分配变量

时间:2010-03-29 22:40:35

标签: javascript jquery ajax return

我想将返回值(只是文本)分配给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_check_match.php,然后看到“1”。

我没有看到使用XML或JSON的意义,因为一个简单的数字就足够了。或者我必须使用XML / JSON?

更新:至于查找未定义的结果...我在回调函数后写了$(“msgbox”)。append(“hm is”+ hm +“和cm是+ cm),cm总是返回undefined .hm是它设置了三秒之间的间隔,因此它保持附加hm为22,cm未定义。

新更新:我是个白痴。期。 ajax_check_msg.php位于错误的位置 - 不同的代码。我检查了错误的页面。但请放心,我相信你的建议!

5 个答案:

答案 0 :(得分:2)

如果您的PHP文件返回1,由于hm设置为22,cm != hm始终为真。

cm显示未定义...因为,你没有定义它。放

var cm = ''; // or something else

首先要初始化它。

答案 1 :(得分:1)

我实际上并不了解jQuery,但是看here,看起来你想要“html”作为你的数据类型。我还建议您在定义它之后执行alert(cm);,看看它是什么,而不仅仅是测试它是否不是一个特定值。

答案 2 :(得分:0)

您是否肯定22已退回?萤火虫表现出的反应是什么?我敢打赌,除了22

之外的其他东西

答案 3 :(得分:0)

AJAX是异步发生的,这意味着您的回调函数会在响应返回时发生,而不是按照它在代码中出现的顺序发生。

您的代码按此顺序发生:

  1. var hm=22;
  2. $.ajax触发
  3. 调用此代码的代码完成
  4. 稍后您的回复会恢复,callback功能会被触发。
  5. 因此,您无法返回cm,在回调函数运行之前不会设置它。相反,使用回调函数中的cm调用需要发生的任何代码,因此它将在变量准备就绪时运行。

答案 4 :(得分:0)

输出data以查看它是否符合您的预期。更好的是,不要设置另一个多余的变量,只需使用if(hm != data)

hm永远不会等于cmdata,因为前者是数字,后者是字符串。首先需要做一些类型转换。