AJAX请求无法在远程主机上运行

时间:2014-01-31 15:34:47

标签: javascript jquery ajax

我有一个AJAX请求,它从表单中提取数据并将其POST到API。奇怪的是它在localhost上工作得非常好,但是当我上传到远程服务器时无声地失败。我的意思是默默无闻:响应代码是空白的,日志中没有任何内容。我已经检查过Firefox和Chrome。加载jQuery,函数正常启动。代码如下:

function send() {
    console.log("preparing");
    var beacon = {
        beaconID: $("#beaconID").val(),
        name:$("#beaconName").val(),
        campaignID:$("#campaignID").val(),
        clientID:$("#clientID").val()
    }
    console.log("payload:");
    console.log(beacon);

    $.ajax({
        type: 'POST',
        url: '../beaconAPI/index.php/createBeacon',
        data: JSON.stringify(beacon),
        contentType: "application/json; charset=utf-8",
        traditional: true,
        success: function (response) {
            console.log("done:");
            console.log(response);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            console.log(JSON.stringify(jqXHR));
            console.log("AJAX error: " + textStatus + ' : ' + errorThrown);
         }
    });
}

1 个答案:

答案 0 :(得分:1)

根据您发布的评论

10:33:21.046 "{"readyState":0,"responseText":"","status":0,
"statusText":"error"}" addBeacon.html:34 10:33:21.046 "AJAX error: error : "

状态代码为零意味着两件事之一:

  1. 您正在运行文件协议
  2. 页面在进行Ajax调用时刷新
  3. 既然你说它正在制作中,听起来就像是#2的情况。

    因此您需要取消导致页面刷新的操作。由于您没有显示如何调用send,以下是取消操作的一些基本方法。

    onclick="send(); return false" 
    onsubmit="send(); return false"
    
    $("#foo").on("click", function(e) {
        send();
        e.preventDefault();
    });