我正在尝试通过执行以下操作来测试邮件上的ajax调用,仅用于测试目的,但由于某种原因,调用永远不会成功。我一直在寻找,我找不到太多可以解释为什么这不起作用。
$.ajax({
type: "POST",
url: "file.php",
success: function(data) {
if(data == 'true'){
alert("success!");
}
},
error: function(data) {
alert("Error!");
}});
file.php包含以下内容:
<?php
return true;
?>
有人可以指出我正确的方向。我意识到这看似简单,但我很难过。感谢。
答案 0 :(得分:5)
return true
将使脚本退出。你需要:
echo 'true';
答案 1 :(得分:0)
首先检查你的路径。 file.php
是否与您的javascript所包含的文件位于同一文件夹中?
如果您的路径不正确,如果您使用的是Chrome,则会在您的javascript控制台上显示404错误。
另外你应该将你的php更改为:
<?php
echo 'true';
一旦你的路径正确并修改你的php,你就应该好好去。
答案 2 :(得分:0)
您是否尝试过直接访问该文件并查看是否输出了某些内容?
return true不应该在那种情况下使用(或者任何其他,最好使用exit或die),通过AJAX调用得到的所有内容都是由服务器端生成的超文本,你应该使用(因为他们在回声之前指出你) '真正的')
如果问题仍然存在,您还可以尝试传统的AJAX调用XMLHttpRequest(不带JQuery),然后检查请求和服务器之间是否有任何问题。
编辑:另外,不要通过比较检查,只需对“数据”发出警报,看看它是什么。
答案 3 :(得分:0)
除了echo'true'建议之外,您还可以尝试提醒返回到ajax的实际数据。这样你就可以看出你的if语句是否具有正确的值/类型。
success: function(data) {
alert(data);
}
答案 4 :(得分:0)
试试这个,新的ajax语法
$.ajax({ type: "POST", url: "file.php" }).done(function(resp){
alert(resp);
});
答案 5 :(得分:0)
这是正确的方法:
$.ajax({
type : "POST",
url : "file.php",
success : function (data) {
/* first thing, check your response length. If you are matching string
if you are using echo 'true'; then it will return 6 length,
Because '' or "" also considering as response. Always use trim function
before using string match.
*/
alert(data.length);
// trim white space from response
if ($.trim(data) == 'true') {
// now it's working :)
alert("success!");
}
},
error : function (data) {
alert("Error!");
}
});
PHP代码:
<?php
echo 'true';
// Not return true, Because ajax return visible things.
// if you will try to echo true; then it will convert client side as '1'
// then you have to match data == 1
?>