我已经设置了WAMP服务器来构建和测试网站。这是我第一次和它一起游泳,直到我得到任何涉及AJAX(基于jQuery)的东西。
基本开始是用户登录表单。提交按钮转到JavaScript函数,其中有一个AJAX调用来检查数据库中的用户等等。这是失败的。谷歌的开发工具说这个问题是"意外的令牌<"无论如何。这条线是AJAX回来的时候。
当AJAX返回一个空白的html页面时,读取这个似乎是一个问题""这是无效的JavaScript,因此会抛出此错误。在这种情况下,如果无法找到php,如果说404页面正在被抛出,我猜它会抛出这个。
所以我爬了一个小时,没有任何快乐。然后我嘲笑了一个简单版本的AJAX并运行希望再次构建用户登录表单以找到我的问题。那没用。
在预感中,我在真实服务器上构建完全相同的东西,发现它确实有效。所以我现在猜测我的问题与WAMP服务器设置有关。我被引导相信AJAX调用只能在setup中工作。
有关可能导致此问题以及在何处查找有关如何为jQuery和AJAX正确设置WAMP的信息的任何想法?
更多模糊的尝试涉及交换:
http://localhost/
for
http://127.0.0.1/
投了一个" No' Access-Control-Allow-Origin'标头出现在请求的资源上。"错误。我认为伟大的Apache在不同的端口上。 Nope Apache在80端口。
试图加入:
crossDomain: true;
dataType: "jsonp",
到AJAX调用并返回一个:"资源被解释为脚本但是使用MIME类型text / html"但这又回到了"意外的令牌<"错误。
我的想法已经不多了,所以如果你有任何想法,我会感激不尽。
编辑 - 我以为我会抛出我在test1.js文件的第十行失败的基本案例:
test1.html
<!DOCTYPE html>
<html lang="en">
<head>
<script src="jquery-2.0.3.min.js"></script>
<script src="test1.js"></script>
</head>
<body>
<form id="test_form" name="test_form">
<fieldset>
<input type="email" id="test_email" name="test_email" />
<input type="submit" value="Login" />
</fieldset>
</form>
</body>
</html>
test1.js
$(function () {
$("#test_form").submit(function() {
var postData = $(this).serialize();
$.ajax({
type: "POST",
data: postData,
url: "http://localhost/test/test1.php",
success: function(data) {
var test_data = JSON.parse(data);
if (test_data.test_success == "success") {
window.location.replace("http://localhost/test/test2.html");
} else {
window.alert("Test Failed.", function(){}, "Test Failed", "OK");
}
}
});
return false;
});
});
test1.php
<?php
$email = $_POST["test_email"];
if ($email == 'test@test.com') {
$arr = array("test_success" => "success");
echo json_encode($arr);
} else {
$arr = array("test_success" => "failed");
echo json_encode($arr);
}
?>
test2.html
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
Success!
</body>
</html>
答案 0 :(得分:0)
感谢大家的帮助。这个故障都是我的(如预期的那样)。在我的代码的更复杂的版本中它没有工作,因为一些失败的PHP代码很好并且返回一个列出错误的网页。对我来说不幸的是,我没有很好地处理这个异常(根本没有),因为我期待收到JSON而不是HTML,所有地狱都崩溃了。
当我把代码缩小以追踪错误的具体原因时,我弄错了我的错误,我留下了较大代码的残余(特别是real_escape_string()函数,无处可寻,导致失败当我把它作为测试用例运行时。一旦我把它拿出来,我就回过头来处理更好的错误处理,并且我可以看到失败并修复它们,就像我知道自己在做什么一样。