这可能会有点搞笑,甚至不知道如何把头衔放在首位。这可能是由于长时间的工作或我只是做错了。
我有一个文件,比如comment.php,其中包含类似于:
的内容var params = $('form#myform').serialize();
$.get("/ajax/file.php?"+params, function(data){
if (data == 'error') {
$('#message').html('Error');
} else if (data == 'success') {
$('#message').html('Success');
}
});
我用firebug检查了一切,一切正常,没有JS错误,文件被调用并返回'错误'或'成功',但仍然,在ajax调用数据的主体与服务器响应不匹配。然后我改变了
if (data == 'error') {
$('#message').html('Error');
} else if (data == 'success') {
$('#message').html('Success');
}
与
if (trim(data) == 'error') {
$('#message').html('Error');
} else if (data == 'success') {
$('#message').html('Success');
}
其中 trim()是我写的一个函数,删除字符串之前或之后的任何空格。我也尝试过将文件称为回显数字并使用jQuery进行检查:
if (data == 1) {
$('#message').html('Error');
} else if (data == 'success') {
$('#message').html('Success');
}
没有结果。如果我只是警报(数据)一切看起来都很难。两个文件都在同一个域中。我的代码与示例完全相同,只是因为我有更多的if / else条件,其中一个应该总是匹配(如果我查看firebug就会这样)。我也尝试使用 switch 语句而没有结果。
我一直在使用这种方法已有一段时间了,从来没有遇到任何问题。想法?
答案 0 :(得分:2)
.get()
回调回调使用3个参数:
所以,你的方法应该有效。确保你注意大写,标点符号和空格。
我会尝试获取有关data
的更多信息以查明问题:
var params = $('form#myform').serialize();
$.get("/ajax/file.php?"+params, function(data){
alert("Type: " + typeof.data +
"\nContents: ==>" + data + "<==" +
"\nTrim: ==>" + $.trim(data) + "<=="); // get more info
});
请注意,jQuery具有 $.trim()
功能
答案 1 :(得分:0)
您不必像这样将序列化数据附加到查询字符串。 $ .get()将采用三个参数,其中一个是数据的序列化(查询字符串)版本或哈希。但是,这不是你在这里的原因。
数据就是打印出的php页面。你真的从那个页面打印出“错误”或“成功”这个词吗?如果没有,那么你想要做的就是不行。
成功回调有三个参数:data,textStatus(response)和xhr。怎么样:
$.get("/ajax/file.php", $("#myform").serialize(), function (data, status) {
if (status == 'error') {
$('#message').html('Error');
}
else if (status == 'success') {
$('#message').html('Success');
}
});