2012-02-28 36 views
0

我已经通过jQuery字符串在jQuery中像这样通过ajax。我的JSON文件有复选框和列表值。如何在PHP中接收和解码JSON字符串?

var jsonstr = JSON.stringify(result);     

这里'jsonstr'是选定的表单元素。

function runAjax(jsonstr) 
    { 
       type:"POST", 
       url: "ajax.php", 
       data: 'json=' +jsonstr, 
       dataType: 'json', 
       headers: { 
        'Content-Type': 'application/json', 

       success: function(){ 
        alert('Test results submitted!'); 

       }, 

    }; 
    return false; 

在PHP我想收到的JSON弦乐器这一点,但它给像“空”的输出。

$data= $_POST['json']; 
    //decode Json string to PHP object 
    $phpobj = json_decode($data,true); 
     print_r($data); 
     $phpobj = json_encode($data,true); 

这有什么错我做的和并应在解码部分是什么?谁能帮忙?

+0

我有类似的问题。你可以告诉我你的JSON字符串吗? – Illep 2012-07-04 00:58:16

回答

-2

你很幸运,我理解这个问题

var jsonObject = eval("(" + jsonFormat + ")"); 
+0

这是回答相反的问题 - 如何解码JavaScript中的json字符串 – wheresrhys 2012-02-28 09:21:16

+0

使用eval是邪恶的......没有进一步的检查,这会在您的应用程序中打开各种安全漏洞 – klaustopher 2012-02-28 09:24:37

2

如果你想送它作为JSON字符串,请给这样

data: {json:jsonstr} 

所以它应该是

$.ajax({ 
       type : 'POST', 
       url : 'sample2.php', 
       data: {json:jsonstr}, 
       success : function(data){ 
        alert(data); 
       }, 
       error : function(XMLHttpRequest, textStatus, errorThrown) { 
        alert("error"); 
       } 
      }); 

它应该为你工作。

实际上没有必要将对象转换为json。您可以直接在$.ajax中提供。

var data = {name:"Jack", age:12, place:"CA", marks:70}; 

$.ajax({ 
     type : 'POST', 
     url : 'post.php', 
     data: data, 
     success : function(data){ 

     }, 
     error : function(XMLHttpRequest, textStatus, errorThrown) { 

     } 
    }); 

,并在PHP中,你可以读到这样

$_POST['name'] 
$_POST['age'] 
$_POST['place'] 
$_POST['marks'] 
+0

_Hi @Diode,谢谢你的回应,其实我具有json字符串(“jsonstr”)的形式结果。现在我需要将这个jsonstr传递给php文件._ – cherry 2012-02-29 10:34:12

+0

所以你可以使用第一种方法 – Diode 2012-02-29 10:47:33

+1

我认为这只有在包含所有需要的控件(名称,年龄,地点,标记)的表单时才会起作用,否则当json发布到PHP,您必须通过阅读php://输入来检索数据 – danicotra 2013-11-03 19:28:16

0

你可以尝试以下方法:

的Javascript变化

var jsonstr = JSON.stringify(result);

data: 'json=' +jsonstr,

一个简单

data: JSON.stringify({json: result}), 

PHP读取数据,而不是这样

$data= $_POST['json'];

在这一个

$data=json_decode(stripslashes(file_get_contents('php://input'))); 

一旦做到这一点,访问这样的数据:

$data->{'variable-name'}