2013-01-02 44 views
1

我正在使用JSON與我在遠程服務器上運行的PHP腳本進行通信。 應用程序調用腳本併發送一些數據。Titanium Mobile/Javascript Json調用不工作

我對JSON沒有太多的經驗,我似乎做錯了什麼,我只是找不到它是什麼。

試圖找到我的問題在谷歌和stackoverflow,但事情是我真的不知道是什麼問題,因爲我沒有與JSON的上述經驗。

這裏所說:

在循環我生成正被推到陣列的臨時列表:

  
    var tmpData = { 
     rowType: row.rowType, 
     isChecked: row.isChecked, 
     position: i 
    }; 

    resultArr.push(tmpData); 

resultArr結果:以上

 
{ 
     isChecked = 1; 
     position = 0; 
     rowType = phone; 
    }, 
     { 
     isChecked = 1; 
     position = 1; 
     rowType = mobilephone; 
    }, 
     { 
     isChecked = 1; 
     position = 2; 
     rowType = email; 
    }, 
     { 
     isChecked = 0; 
     position = 3; 
     rowType = sms; 
    } 

是被髮送到遠程php腳本:

xhr.send({data : JSON.stringify(resultArr) });

結果在PHP中:

 
[data] => [ 
{\"rowType\":\"type1\",\"isChecked\":true,\"position\":0}, 
{\"rowType\":\"type2\",\"isChecked\":true,\"position\":1}, 
{\"rowType\":\"type3\",\"isChecked\":true,\"position\":2}, 
{\"rowType\":\"type4\",\"isChecked\":false,\"position\":3}] 

在PHP腳本我需要這個數據並將數據保存在數據庫中。 但json_decode$_POST["data"]$_POST結果爲空。

所以我的問題,我做錯了什麼?

回答

1

正如我從$ _POST ['data'] - 變量中看到的那樣,引號會被轉義(如\")。

您必須在$_POST['data']上運行stripslashes才能正確解碼。試了一下,我的最終代碼看起來像這樣:

$json = '[ 
{\"rowType\":\"type1\",\"isChecked\":true,\"position\":0}, 
{\"rowType\":\"type2\",\"isChecked\":true,\"position\":1}, 
{\"rowType\":\"type3\",\"isChecked\":true,\"position\":2}, 
{\"rowType\":\"type4\",\"isChecked\":false,\"position\":3}]'; 

$decoded = json_decode(stripslashes($json)) ; 
+0

謝謝你,先生。我不知道爲什麼,但我根本沒有想到這一點,這麼簡單..我總是認爲'stripslashes'只適用於字符串,但JSON字符串是一個字符串..非常感謝! –