2011-12-01 33 views
0

我現在有點沉默了。 所有我試圖做的是發送一個JSON文本到PHP,並處理和發送響應BACL ..轉義json被讀爲數組在php

這裏是我送我的textarea的值的數據..下面

**asdasd #$**&**%^*(AAAA SADQWEASD /// '' \\\ '' l; "" ** 

是發送到PHP的JSON(從控制檯得到它):

data={"Text":"asdasd #$&%^*(AAAA SADQWEASD /// '' \\\\\\ '' l; \"\" "} 

我使用如下的jQuery AJAX功能:

function ajaxfunc(data, path){ 
     $.ajax({ 
      type: "POST", 
      url: path, 
      data: 'data='+data, 
      success: function(response){ 
      } 
     }); 
    } 

在PHP中,我正在這樣做。

$res = json_decode(stripslashes(escapeJsonString($_POST['feed'])), true); 

function escapeJsonString($value) { 
    # list from www.json.org: (\b backspace, \f formfeed) 

    $search = array("\n", "\r", "\u", "\t", "\f", "\b", "/", '"'); 
    $replace = array("\\n", "\\r", "\\u", "\\t", "\\f", "\\b", "\/", "\""); 
    $result = str_replace($search, $replace, $value); 

    $escapers = array("\\", "/", "\"", "\n", "\r", "\t", "\x08", "\x0c"); 
    $replacements = array("\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\f", "\\b"); 
    $result = str_replace($escapers, $replacements, $value); 

    return $result; 
} 

echo $res["Text"]; 

的問題是:& ..在PHP中,無法解析,因此響應爲空.. 我也想確認,檢測新行字符..基本上我期待的「所見即所得」使用JSON .. json_encode和json_decode

+1

發送也許這是一個打字錯誤或混淆失敗,但'$ _POST ['feed']'不會包含您的數據,因爲您在'$ .ajax'調用中使用密鑰'data'發送了它。 – Andrew

+0

@Andrew:是的,它是一個錯字..它應該是$ _POST ['data'] –

+0

可能有更好的替代方案,你正在嘗試做什麼。爲什麼你需要將json格式的數據發送回服務器?如果你只是想以key => value對的方式訪問服務器上的數據,那麼你可以將JS對象傳遞給$ .ajax函數,並將它們編碼爲查詢字符串並將它們發佈到服務器。你能澄清你想在這裏做什麼嗎? – Simon

回答

1

基於對只是想表單輸入發送到下列方式在服務器,使用序列化()評論:

$.ajax({ 
    type: "POST", 
    url: path, 
    data: $('form').serialize(), 
    success: function(response){ 
    } 
); 

如果你想要做的就是訪問s上的表單輸入通過$ _POST數組,然後在客戶端上轉換爲JSON是一種浪費。 serialize()應該適合你。

但是,如果你真的想使用JSON,然後使用道格拉斯克羅克福德here的JSON-js庫。請注意,關於此主題還有很多其他信息:Serializing to JSON in jQuery。下面的例子:

$.ajax({ 
    type: "POST", 
    url: path, 
    data: 'data='+(JSON.stringify(data)), 
    success: function(response){ 
    } 
); 
+0

原因yi是避免serialize()或serializeArray()它會發送數據如下: {「name」:「data」},{「value」:「asdasdas asd」} 而不是 {「data 「:」asdasdas asd「} 我想將POST數據發送到PHP,如上所示。我還想保留 –

+0

內的新行字符好的,使用JSON-js庫。在底部查看我的編輯。 – Simon

0

,如果你想送一個JSON格式的數據,你可以試試這個

data = {"Text":"asdasd #$&%^*(AAAA SADQWEASD /// '' \\\\\\ '' l; \"\" "}; 
data = JSON.stringify(data); 

然後用jquery.ajax或jquery.post