2013-05-18 110 views
0

我有下面的代碼運行的發送數據作爲JSON對象jQuery的AJAX JSON數據未發送

var jdata = JSON.stringify(grid.serialize()); 
$.ajax({ 
    'type': 'POST', 
    'url': 'print.php', 
    'data': jdata, //assuming you have the JSON library linked. 
    'contentType': "application/json", 
    'success': function (data) { 
     alert(data); 
    }, 
    'error': function (x, y, z) { 
     alert(x.responseText); 
     // x.responseText should have what's wrong 
    } 
}); 
alert(JSON.stringify(grid.serialize())); 

Currenty的AJAX功能打印

[{ 「ID」 後的警覺:」 1" , 「欄」: 「1」, 「行」: 「1」, 「size_y」: 「1」, 「size_x」: 「1」},{ 「ID」: 「2」, 「欄」:」 2" , 「行」: 「1」, 「size_y」: 「1」, 「size_x」: 「1」}]

在我使用<?php print_r($_POST) ?>看什麼網頁接收網頁正在發送和它不斷輸出

Array 
(
) 

我必須失去了一些東西簡單,但一直無法弄清楚什麼。也許一組新的眼睛會看到我犯的一個簡單的錯誤。

+0

只是一個快速的猜測......我認爲你必須寫小寫文章。否則......你用'$ .post'嘗試了嗎? – migg

+0

您是否正在發表'[{「id」:「1」,「col」:「1」,「row」:「1」,「size_y」:「1」,「size_x」:「1」},{「 id「:」2「,」col「:」2「,」row「:」1「,」size_y「:」1「,」size_x「:」1「}]'原樣? –

+1

如果以大寫發佈則無關緊要。 –

回答

2

我認爲$_POST僅在發送編碼爲x-www-form-urlencoded的數據時纔會填充。所以,只要指定JSON字符串到一個鍵(jQuery的需要適當編碼它的):

'data': {data: jdata} 

並取出'contentType': "application/json"部分。

那麼你得到的數據PHP中:

$data = json_decode($_POST['data'], true); 

另外,獲得請求的原始體在PHP並對其進行處理:How to retrieve Request Payload

+0

我試過這個方法,它傳遞了json數組,但是後退了一個雙引號 – Somk

+0

然後你應該禁用魔術引號:http://stackoverflow.com/questions/6642901/php-5-3-automatically-escapes-get -post-從外形串 –

0

如果要發送JSON到服務器,在後端抓取你的JSON使用:

json_decode(file_get_contents('php://input')); 

它不會在$ _PO ST超級全球。