我有一个纯粹的javascript代码,我需要发送一个JSON(可能很大,所以超过GET限制....),所以我想使用AJAX进行POST请求。
我的代码是......
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Test POST via AJAX</title>
</head>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
<script>
var waypoints = [{
"options": {
"allowUTurn": false
},
"latLng": {
"lat": 44.911434,
"lng": 7.671602
},
"name": "Corso Vinovo, Carignano, TO, Piemonte, Italia",
"_initHooksCalled": true
}, {
"options": {
"allowUTurn": false
},
"latLng": {
"lat": 44.910167,
"lng": 7.676274
},
"name": "Il Tempio del Pane, Corso Cesare Battisti, Carignano, TO, Piemonte, Italia",
"_initHooksCalled": true
}, {
"options": {
"allowUTurn": false
},
"latLng": {
"lat": 44.908034,
"lng": 7.675075
},
"name": "Banca Intesa, Via Ferdinando Salotto, Carignano, TO, Piemonte, Italia",
"_initHooksCalled": true
}];
alert ('Waypoints --> ' + JSON.stringify(waypoints));
$.ajax({
type: "POST",
url: "NewPage.php",
contentType: "application/json",
data: JSON.stringify(waypoints),
success: function()
{
alert("OK ...");
},
error: function()
{
alert("KO ...")
}
})
alert('After post request ...');
</script>
</body>
</html>
这里你是NewPage.php的代码
<?php
echo 'Waypoints ?????';
print_r($_POST)
?>
执行代码我可以看到我的AJAX代码提醒我“OK”,但我看不到任何关于我的NewPage.php
我对这些事情说再见了,对不起平庸......
任何建议,例如,jsfiddle,替代?
提前多多感谢!
切萨雷
答案 0 :(得分:0)
你应该在php中使用die。
<?php
echo json_encode($data_to_pass);
die;
?>
并在您的javascript文件中使用
success: function(data)
{
alert(data);
},
答案 1 :(得分:0)
由于您使用的内容类型为 application / json ,因此您应该从您的php页面返回json_encode结果。也使用exit,否则你会想知道为什么它返回整个页面而不仅仅是json数据。
echo json_encode($some_data);
exit();
答案 2 :(得分:0)
将您的成功回调更改为:
success: function(data)
{
alert(data);
},
一旦AJAX帖子成功完成,您应该会看到警报内的PHP页面中有什么回显。
答案 3 :(得分:0)
$.ajax({
type: "POST",
url: "NewPage.php",
dataType: "json",
data: {'waypoints':waypoints},
success: function(resp)
{
//alert("OK ...");
},
error: function()
{
//alert("KO ...")
}
})
NewPage.php
<?php
echo 'Waypoints ?????';
print_r($_POST['waypoints']);
?>
答案 4 :(得分:0)
尝试更改数据:航点到数据:{mydata:waypoints}。直接传递数组会导致jQuery以奇怪的格式传递它。http://api.jquery.com/jQuery.param/
答案 5 :(得分:0)
您尚未使用从ajax成功回调中返回的响应
$.ajax({
type: "POST",
url: "NewPage.php",
contentType: "application/json",
data: JSON.stringify(waypoints),
success: function(response)
{
alert(response);
},
error: function(err)
{
alert(err)
}
})
也
alert('After post request ...');
在ajax调用完成后,将不会执行,它将在ajax请求完成后立即调用,独立于完成或挂起。在成功或错误中你的东西也是如此