2014-02-13 123 views
0

好吧我想我会发疯,因为我已经做了这一百万次,现在我不能让它工作。我正在用一些简单的JSON做一个PHP脚本的ajax后,然后从我的PHP返回JSON,但它当前显示$ _POST作为一个空数组。

这里是我的JS:

$.ajax({ 
    type: "POST", 
    url: "/account/book-promo.php", 
    data: '{"firstName":"Peter" , "lastName":"Jones"}', 
    success: function(response) { 
    console.log(response); 
    } 
}); 

我的PHP:

<?php 
var_dump($_POST); 
exit; 

萤火显示,因为它应该和我有数据尚未发送的JSON我的要求是使用POST我得到的回应是:

array(0) { 
} 

我能想到的唯一的事情就是有某种服务器设置这是阻止这个工作,但我不知道为什么会有。也许我错过了一个支架或其他什么东西,这让我很生气!

欢迎任何和所有建议!

+0

删除数据周围的引号:'data:{“firstName”:“Peter”,“lastName”:“Jones”},'。你可能还想添加'dataType:'json',' – AlexP

回答

2

发送它就像你想发送它为json。

data: { data : '{"firstName":"Peter" , "lastName":"Jones"}' }, 

,如果你想送它作为POST只是删除引号'

data: {"firstName":"Peter" , "lastName":"Jones"}, 
+0

好的,我可不知道为什么?! –

+0

你只是发送一个没有密钥的字符串。不是你在第一种情况下使用密钥“data”发送数据 – zzlalani

+0

,在第二种情况下使用firstName和lastName .. – zzlalani

0

你必须这样做:

$.ajax({ 
    type: "POST", 
    dataType: "json", // <---------------its required if response is json 
    url: "/account/book-promo.php", 
    data: {"firstName":"Peter" , "lastName":"Jones"}, //<---instead of string send the object this way 
    success: function(response) { 
    console.log(response); 
    } 
}); 

您在您的文章重新调谐说来自我的PHP的JSON:

所以需要使用dataType:"json"和要发送到你的PHP的数据作为对象来发送(这通常是对键和值由:{key:value}分离)作为代码要发送一个string