2011-07-08 52 views
6

我有一個紅寶石散列,其中的鍵是網址,值是整數。我將散列轉換爲JSON,我想知道是否可以通過AJAX請求發送URL內的JSON,然後從params散列中提取該JSON。您可以通過網址發送JSON嗎?

此外,我將發送一個JSONifyed紅寶石散列回客戶端。如果我在我的AJAX函數中有一個成功的回調函數,我在data變量中接收數據,那麼如何使用JQuery解析JSON?

請讓我知道,如果我需要更具體。

+0

如果你正在做AJAX請求,爲什麼不發佈它,而不是發送JSON作爲URL的一部分... – Endophage

+0

@Endophage如果我這樣做,那麼我將如何從服務器訪問JSON? –

回答

10

是的,你可以沒有問題。無需手動編碼/解碼!

您的代碼會是這樣的:

var jsonParam = '{"name":"Edgar"}'; //Sample json param 
$.ajax({ 
    ... 
    type: "get", //This sends in url 
    data: {jsonParam: jsonParam}, //This will encode your json for url automatically 
    dataType: "json", //With this the response will be automatically json-decoded! 
    success: function(response){ //Assuming your server output was '{"lastName":"Villegas"}' as string 
    alert(response.lastName); 
    } 
}); 

正如你所看到的,是不需要手動編碼/解碼。 Jquery處理這一切!

希望這會有所幫助。乾杯

PS:如果由於某種原因,您需要手動對url進行編碼/解碼,請使用javascript的encodeURIComponent(string)$.parseJSON(jsonString)方法。

+0

等待,所以通過指定'dataType:「json」'我不需要解析服務器上的JSON? (例如JSON.parse(json_here))。另外,如果我決定將它作爲POST請求發送,我將如何使用ruby訪問服務器上的JSON? –

1

是的,你可以傳遞json對象作爲get或post參數。

爲了使用Jquery解析json字符串,你可以使用$ .parseJSON。

+0

我的意思是通過url本身。但是,如果我將它張貼並在'data'選項中發送,我將如何從控制器訪問它? –

+0

這取決於你的服務器端代碼。例如,在C#中,您可以使用Request [elementName],或者在控制器操作中,您可以指定確切的參數名稱,它將在執行操作時自動填充。 – ShankarSangoli

+0

@ShankarSangoli它會工作,但是在get/query參數中傳遞JSON對象是一個好習慣嗎? – Nitin

相關問題