2012-02-28 69 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'}