2012-11-06 24 views
0

我解析生成的json與jquery $ .ajax,但有一個選項,我不明白。我看到它在一些例子中,並試圖在jquery.com但仍然不知道找一下:數據的使用和含義:{get_param:'value'}在jQuery ajax + JSON

這個選項是:

data: { get_param: 'value' } 

它這樣使用:

$.ajax({ 
       type: 'GET', 
       url: 'http://example/functions.php', 
       data: { get_param: 'value' }, //why we shell use that in that case? 
       success: function (data) { 
            var names = data 
        $('#cand').html(data); 
       } 
      }); 

我知道「數據:」是什麼發送到服務器,但解析JSON我以爲我不發送,但從服務器GET型檢索。並且下一部分「get_param:'value'」 在這種情況下對我來說沒有任何意義,任何人都可以請解釋什麼時候以及在什麼情況下使用它的shell?

謝謝。

回答

2

我知道, 「數據」,也就是發送到服務器

是。如果data是一個對象,它將被序列化爲一個application/x-www-form-urlencoded字符串,然後根據請求類型(GET/POST)將其放入查詢字符串或請求正文中。

jQuery爲此做了所有必要的轉義。 (默認情況下,通過將[]添加到鍵名稱中,可以將嵌套的數據結構(在您的示例中沒有任何內容)摺疊爲PHP樣式)。

但是解析JSON

JSON不參與(除非服務器的一些響應)。

何時以及什麼以及在什麼情況下,外殼使用

每當你想將數據傳遞給服務器,而不是請求靜態URI。

+0

所以我可以跳過那條線「data:{get_param:'value'}」如果我只想解析提供的url並將它放在DOM上,但是不需要發送到服務器。我對麼? – devjs11

+0

@Alex - 是的。這將是「請求靜態URI」。 – Quentin

+0

非常感謝你! – devjs11

1

您不發送JSON(通常),您發送簡單的GET或POST HTTP參數。它們通常以對象字面值給予ajax方法,但您也可以使用字符串"getparam=value"。如果您提供了一個對象,jQuery將爲您執行參數序列化和URL編碼 - 它們將作爲x-www-form-urlencoded發送。

要從the docs舉:

數據ObjectString

數據要被髮送到服務器。如果 不是字符串,它將被轉換爲查詢字符串。它附加到GET請求的url。請參閱 processData選項以防止此自動處理。 對象必須是 是關鍵/值對。如果value是一個數組,則jQuery將根據traditional設置的值使用同一個密鑰對多個 值進行序列化。

+0

謝謝你,你的回答也很有用! – devjs11