ajax POST请求返回失败

时间:2013-12-11 01:48:41

标签: php jquery ajax

以下脚本返回失败,即使它曾经起作用:

function postToPHP(data_to_send) {
    $.ajax({
        type: "POST",
        datatype: "json",
        async: false,
        url: "http://school.edu/myurl/write_to_mongo.php",
        data: data_to_send,
        success: function ($msg) {
            alert('success');
            return;
        },
        error: function () {
            alert('failure to send to database');
        }
    });

如果重要,它会与以下PHP脚本交互:     

//Get data from .ajax call
$data = $_POST;

//Open mongo and select database
$m = new Mongo();
$db = $m->selectDB("numbers");

//select a collection
$collection = $db->testData;

//insert data
$collection->insert($data);

//find collection contents
$cursor = $collection->find();

echo $data;
?>

知道出了什么问题吗?我的Safari调试器向我显示“无法加载资源。服务器响应不好。”但是在谷歌上搜索这个并没有产生任何有用的东西;我已经确定我正在正确导入jQuery。

3 个答案:

答案 0 :(得分:2)

将url放入地址栏时无法在http://school.edu/myurl/write_to_mongo.php找到服务器。另外他们必须允许CORS。因此,如果他们允许CORS,则服务器关闭,否则它是同源策略问题。

答案 1 :(得分:0)

阅读Same_origin_policy

AJAX只能在同一域名内进行通信。


检查是否找不到页面网址。

function postToPHP(data_to_send) {
    $.ajax({
        type: "POST",
        datatype: "jsonp", //for crossDomain request
        async: false,
        crossDomain: true, //crossDomain request
        url: "http://school.edu/myurl/write_to_mongo.php",
        data: data_to_send,
        success: function ($msg) {
            alert('success');
            return;
        },
        error: function () {
            alert('failure to send to database');
        },
        statusCode: {
            404: function () { // if page is not found
                alert("page not found");
            }
        }
    });
}

<小时/> How to get a cross-origin resource sharing (CORS) post request working

What is JSONP all about?

答案 2 :(得分:0)

我最后通过将.ajax请求中的url设置为本地来解决问题,例如:

url: "write_to_mongo.php"

无论出于何种原因,给出一个完整的网址会导致它被视为源自不同的域名,即使它不是。

相关问题