以下脚本返回失败,即使它曾经起作用:
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。
答案 0 :(得分:2)
将url放入地址栏时无法在http://school.edu/myurl/write_to_mongo.php
找到服务器。另外他们必须允许CORS。因此,如果他们允许CORS,则服务器关闭,否则它是同源策略问题。
答案 1 :(得分:0)
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
答案 2 :(得分:0)
我最后通过将.ajax请求中的url设置为本地来解决问题,例如:
url: "write_to_mongo.php"
无论出于何种原因,给出一个完整的网址会导致它被视为源自不同的域名,即使它不是。