2011-09-17 44 views
0

我不明白为什么这不起作用,请帮助!我刚刚得到消息“解码=”麻烦试图通过stringify传递数组到php

mydata = JSON.stringify(array_str_idnum); 

$.ajax({ 
type:   'post', 
cache:   false, 
url:   'parser.php', 
data:   mydata, 
datatype:  'json', 
success: function(msg){ 
     $("#formstatus").ajaxComplete(function(){$(this).html(msg)}); 
      }   
}); 

<?php 

// decode JSON string to PHP object 
$decoded = json_decode($_POST['myJson'],true); 

echo "decoded ="; 
echo $decoded; 

?> 
+0

您是否倾销了$ _POST的内容以查看其中包含的内容? –

+0

尝试使用'json_last_error'打印最后一个错误(如果有的话) –

+0

我对jQuery不太熟悉,但数据不必包含查询字符串?你可以尝试使用“data:'myJson ='+ mydata”而不是“data:mydata”。无论哪种方式,我都没有看到任何myJson数据被设置。 –

回答

2

由于@Reanimation建议,你需要发送,将持有的JSON数据参数。我建议做更JavaScriptish方式:

$.ajax({ 
    type: 'post', 
    cache: false, 
    url: 'parser.php', 
    data: {'myJson': mydata}, 
    datatype: 'json', 
    success: function(msg){ 
      $("#formstatus").ajaxComplete(function(){$(this).html(msg)}); 
    }   
}); 

的另一件事是$decoded实际上只要原来array_str_idnum是数组保存数组,这样做echo $decoded将输出Array()。另请注意,json_decode的第二个参数是将对象作为关联数组返回。

+0

谢谢大家,我实现了这一点,做了一个var dumpstring(33)“[[\”1316333978281 \“],[\”moved \“]]” – Matthew

+0

谢谢大家,我实现了这一点,并在$ _POST返回的变量:“string(33)”[[\“1316333978281 \”],[\“moved \”]]“”这是括号中的正确数据,但它似乎不想将其解码为阵列。我会继续尝试! – Matthew

+0

事实证明,我并不需要先将数组串起来,它仍然保持原样。再次感谢那些帮助过我的人。 – Matthew