ajax POST请求返回失败


ajax POST request returns failure

下面的脚本返回一个失败,尽管它过去是有效的:

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。

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

读取Same_origin_policy。

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


检查是否找不到页面url。

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");
            }
        }
    });
}


如何获得跨来源资源共享(CORS)请求后工作

JSONP的全部内容是什么?

我最终修复了这个问题,将.ajax请求中的url设置为本地,例如:

url: "write_to_mongo.php"

无论出于何种原因,提供完整的url都会导致它被视为来自不同的域,即使它不是。