WAMP没有成功运行jQuery AJAX

时间:2014-08-30 07:26:16

标签: jquery ajax wamp

我已经设置了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>

1 个答案:

答案 0 :(得分:0)

感谢大家的帮助。这个故障都是我的(如预期的那样)。在我的代码的更复杂的版本中它没有工作,因为一些失败的PHP代码很好并且返回一个列出错误的网页。对我来说不幸的是,我没有很好地处理这个异常(根本没有),因为我期待收到JSON而不是HTML,所有地狱都崩溃了。

当我把代码缩小以追踪错误的具体原因时,我弄错了我的错误,我留下了较大代码的残余(特别是real_escape_string()函数,无处可寻,导致失败当我把它作为测试用例运行时。一旦我把它拿出来,我就回过头来处理更好的错误处理,并且我可以看到失败并修复它们,就像我知道自己在做什么一样。