我想将返回值(只是文本)分配给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位于错误的位置 - 不同的代码。我检查了错误的页面。但请放心,我相信你的建议!
答案 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是异步发生的,这意味着您的回调函数会在响应返回时发生,而不是按照它在代码中出现的顺序发生。
您的代码按此顺序发生:
var hm=22;
$.ajax
触发callback
功能会被触发。因此,您无法返回cm
,在回调函数运行之前不会设置它。相反,使用回调函数中的cm
调用需要发生的任何代码,因此它将在变量准备就绪时运行。
答案 4 :(得分:0)
输出data
以查看它是否符合您的预期。更好的是,不要设置另一个多余的变量,只需使用if(hm != data)
。
hm
永远不会等于cm
或data
,因为前者是数字,后者是字符串。首先需要做一些类型转换。