json_decode使用有效的json

时间:2015-05-01 18:07:19

标签: javascript php ajax json

所以......这就是问题:

我在我的javascript文件中得到了这个:

this.fields = {
  'zone': ['DouroMinho','TrasosMontes', 'BeiraLitoral', 'BeiraInterior'],
  'flower': ['Milho Grao', 'Milho', 'Prado', 'Batata', 'Couve', 'Tomateiro', 'Pessegueiro', 'Pomoideas', 'Vinha'],
  'Months': ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro']
}

var sendDataToText = $.ajax({
    url: "http://localhost:4000/process-data.php",
    type: "POST",
    data: { 'input-data': JSON.stringify(this.fields) },
    cache: false,
    dataType: json,
    success: function(data){
      console.log('call to process-data successful');
      return;
    },
    error: function() { console.log("process-data falhou"); return; }
  });

在我的php上我得到了这个:

if(get_magic_quotes_gpc()){
$d = stripslashes($_POST['input-data']);
}else{
$d = $_POST['input-data'];
}
$d = json_decode($d,true);

echo var_dump($d);

我让MAMP运行我的服务器,并在端口3000上运行wep app。 当我去localhost:4000测试我的process-data.php它只显示NULL。

怎么了? json_decode错误返回0,这意味着json_decode不是问题。 json也有效,并在ajax调用之前变为字符串。请帮忙,哈哈。谢谢

1 个答案:

答案 0 :(得分:3)

当成功的数据进入时,使用变量保存上下文(范围):

var something;

$.ajax({
    ...,
    success: function(data){
        console.log('call to process-data successful');
        something = data;
    },
...
console.log(something);