2011-03-07 43 views
1

我一直在這裏長期的使命,我已經到了我的程序的最後一步,我似乎無法弄清楚如何破解開放JSON字符串從我的Ajax請求發送到我的PHP。我怎樣才能訪問我的JSON編碼的數據從PHP到MySQL查詢

我的jquery代碼看起來像這樣;

$('#formElem').submit(function(){ 
    var data = {}; 
    $("input[name=scene]").each(function() { 
     data[$(this).val()] = { 
      scene: $(this).val(), 
      int_text: $(this).next("input[name=int_ext]").val(), 
      desc: $(this).next().next("input[name=scene_desc]").val(), 
      day_night: $(this).next().next().next("input[name=day_night]").val() 
     }; 
    }); 
    $.post("script.import.php", { 
    action: 'save-import', 
    data: data // as-is 
    //data: JSON.stringify(data) // with stringify 
    }, function(resp) { 
    console.log(eval('('+resp.scene+')')); 
    console.log(eval(resp.int_ext)); 
    console.log(eval(resp.desc)); 
    console.log(resp.day_night); 
    }); 
    return false; 
}); 

,我的PHP是:

if($_POST['save-import']){ 
    $scenes = json_decode($_POST['data']); 
    echo($scenes); 
} 

什麼我JSON響應看起來像一個片段:

WITHOUT stringify() 
action save-import 
data[100][day_night] NIGHT 
data[100][desc] SAPNA'S BEDROOM 
data[100][int_text] INT 
data[100][scene] 100 
data[101][day_night] NIGHT 
data[101][desc] LIVING ROOM 
data[101][int_text] INT 
data[101][scene] 101 
data[102][day_night] NIGHT 
data[102][desc] SHAH HOUSE, FRONT YARD 
data[102][int_text] EXT 
data[102][scene] 102 
data[103][day_night] NIGHT 
data[103][desc] SHAH HOUSE, FRONT PORCH 
data[103][int_text] EXT 

WITH stringify() 
    {"2":{"scene":"2","int_text":"INT","desc":"SAPNA'S BEDROOM","day_night":"MORNING"},"9":{"scene":"9","int_text":"INT","desc":"BMW","day_night":"NIGHT"},"19":{"scene":"19","int_text":"INT","desc":"SAPNA'S BEDROOM","day_night":"DAY"},"21":{"scene":"21","int_text":"INT","desc":"KITCHEN","day_night":"DAY"},"22":{"scene":"22","int_text":"INT","desc":"HALLWAY","day_night":"DAY"},"23":{"scene":"23","int_text":"INT","desc":"TEMPLE ROOM","day_night":"DAY"},"24":{"scene":"24","int_text":"INT","desc":"LIVING ROOM","day_night":"NIGHT"} 

當AJAX發送到我的PHP得到處理,我需要能夠拆分json響應來完成此查詢

mysql_query("INSERT INTO (`project_id`, `scene`, `int_ext`, `scene_desc`, `day_night`) 
      VALUES ('10', 'data.scene', 'data.int_ext', 'data.desc', 'data.day_night')"); 

什麼JSON應該讀英語是

scene: 24 
int_ext: "INT" 
desc: "LIVING ROOM" 
day_night: "NIGHT" 

爲一個查詢,並做給在JSON字符串每一個場景。

編輯:

with var_dump 
string(11463) ""{\\\"2\\\":{\\\"scene\\\":\\\"2\\\",\\\"int_text\\\":\\\"INT\\\",\\\"desc\\\":\\\"SAPNA\\'S BEDROOM\\\",\\\"day_night\\\":\\\"MORNING\\\"},\\\"9\\\":{\\\"scene\\\":\\\"9\\\",\\\"int_text\\\":\\\"INT\\\",\\\"desc\\\":\\\"BMW\\\",\\\"day_night\\\":\\\"NIGHT\\\"},\\\"19\\\":{\\\"scene\\\":\\\"19\\\",\\\"int_text\\\":\\\"INT\\\",\\\"desc\\\":\\\"SAPNA\\'S BEDROOM\\\",\\\"day_night\\\":\\\"DAY\\\"},\\\"21\\\":{\\\"scene\\\":\\\"21\\\",\\\"int_text\\\":\\\"INT\\\",\\\"desc\\\":\\\"KITCHEN\\\",\\\"day_night\\\":\\\"DAY\\\"},\\\"22\\\":{\\\"scene\\\":\\\"22\\\",\\\"int_text\\\":\\\"INT\\\",\\\"desc\\\":\\\"HALLWAY\\\",\\\"day_night\\\":\\\"DAY\\\"},\\\"23\\\":{\\\"scene\\\":\\\"23\\\",\\\"int_text\\\":\\\"INT\\\",\\\"desc\\\":\\\"TEMPLE ROOM\\\",\\\"day_night\\\":\\\"DAY\\\"},\\\"24\\\":{\\\"scene\\\":\\\"24\\\",\\\"int_text\\\":\\\"INT\\\",\\\"desc\\\":\\\"LIVING ROOM\\\",\\\"day_night\\\":\\\"NIGHT\\\"},\\\"26\\\":{\\\"scene\\\":\\\"26\\\",\\\"int_text\\\":\\\"INT\\\",\\\"desc\\\":\\\"TREE HOUSE\\\",\\\"day_night\\\":\\\"NIGHT\\\"} 

編輯:基於您發佈的var_dump的stripslashes

Catchable fatal error: Object of class stdClass could not be converted to string in /home/content/06/5679006/html/v3/test.php on line 4 
+0

在你的php中,替換echo($ scenes); var_dump($ scenes);併發布給你什麼。 – 2011-03-07 22:37:13

+0

@Stephen我用var_dump編輯 – Eli 2011-03-07 22:59:49

+0

將數據轉換爲自然數組而不是對象時,數據的外觀如何?例如json_decode($ _ POST [ '數據'],TRUE); – FatherStorm 2011-03-07 23:25:45

回答

0

以下爲我工作。顯然這裏的斜線確實出了問題:

$json = <<<JSON 
    {\\\"2\\\":{\\\"scene\\\":\\\"2\\\",\\\"int_text\\\":\\\"INT\\\",\\\"desc\\\":\\\"SAPNA\\'S BEDROOM\\\",\\\"day_night\\\":\\\"MORNING\\\"},\\\"9\\\":{\\\"scene\\\":\\\"9\\\",\\\"int_text\\\":\\\"INT\\\",\\\"desc\\\":\\\"BMW\\\",\\\"day_night\\\":\\\"NIGHT\\\"},\\\"19\\\":{\\\"scene\\\":\\\"19\\\",\\\"int_text\\\":\\\"INT\\\",\\\"desc\\\":\\\"SAPNA\\'S BEDROOM\\\",\\\"day_night\\\":\\\"DAY\\\"},\\\"21\\\":{\\\"scene\\\":\\\"21\\\",\\\"int_text\\\":\\\"INT\\\",\\\"desc\\\":\\\"KITCHEN\\\",\\\"day_night\\\":\\\"DAY\\\"},\\\"22\\\":{\\\"scene\\\":\\\"22\\\",\\\"int_text\\\":\\\"INT\\\",\\\"desc\\\":\\\"HALLWAY\\\",\\\"day_night\\\":\\\"DAY\\\"},\\\"23\\\":{\\\"scene\\\":\\\"23\\\",\\\"int_text\\\":\\\"INT\\\",\\\"desc\\\":\\\"TEMPLE ROOM\\\",\\\"day_night\\\":\\\"DAY\\\"},\\\"24\\\":{\\\"scene\\\":\\\"24\\\",\\\"int_text\\\":\\\"INT\\\",\\\"desc\\\":\\\"LIVING ROOM\\\",\\\"day_night\\\":\\\"NIGHT\\\"},\\\"26\\\":{\\\"scene\\\":\\\"26\\\",\\\"int_text\\\":\\\"INT\\\",\\\"desc\\\":\\\"TREE HOUSE\\\",\\\"day_night\\\":\\\"NIGHT\\\"}} 
JSON; 

$json = stripslashes(stripslashes($json)); 

$data = json_decode($json); 

foreach($data as $item) { 
    /* 
    Item looks like this: 
    stdClass Object 
      (
       [scene] => 2 
       [int_text] => INT 
       [desc] => SAPNA'S BEDROOM 
       [day_night] => MORNING 
      ) 
    */ 
} 
+0

哦,我該如何使用我的$ _POST ['data']變量? – Eli 2011-03-07 23:42:06

+0

只要說$ json = $ _POST ['data'],例如。 – fresskoma 2011-03-08 10:32:46

0

,試試這個:

if($_POST['save-import']){ 
    $scenes = json_decode(stripslashes($_POST['data'])); 
    echo($scenes); 
} 

看上去就像是要一點點瘋狂在傳送之前轉義JSON對象。

+0

我得到一個與stripslashes錯誤嗯 – Eli 2011-03-07 23:12:08

+0

錯誤消息是什麼? – 2011-03-07 23:38:40

+0

我將它添加到原始帖子底部 – Eli 2011-03-07 23:45:01