2012-02-28 74 views
0

進行GET請求很簡單,只需在錨標記的href屬性中指定一個URL即可。如何將JSON對象追加到GET url?

但是,如何將JSON對象添加到該URL?

我猜這必須通過jQuery來完成......但我無法使用AJAX,或者瀏覽器不顯示響應。

到目前爲止,我試過這個:$j("#gen").attr("href", $j("#gen").attr("href") + "?" + JSON.stringify({object: data}));但它不附加數據。這是觸發點擊

+1

你的意思是你不能使用AJAX或響應沒有呈現?你只是想生成一個鏈接? – Josh 2012-02-28 04:39:28

+0

是的,我只是想做一個HTTP GET請求,以便服務器可以重定向我的瀏覽器,基於參數中的數據。 – DerNalia 2012-02-28 04:46:48

+1

嚴格地說,不需要jQuery,你只需要正確編碼JSON:'link'。但我不認爲你爲你的問題提供了足夠的信息(上下文)。 – 2012-02-28 04:49:21

回答

1

這應該工作:

jQuery("#gen").attr("href", jQuery("#gen").attr("href") + "?" + jQuery.param({object: data})); 
2

一個GET請求具有查詢字符串參數。如果它是您真正想要的GET請求,那麼您可以將對象上的屬性映射到請求上的鍵值對。

例如:

JSON object: { prop1: val1, prop2: val2 } 
url get querystring: ?prop1=val1&prop2=val2 

但是,如果你要的對象發送到服務器,也許你真的想要一個POST?在這種情況下,JSON對象將位於POST的主體中。

3

GET請求中的任何值都應該被URL編碼到請求字符串中。

有一個jQuery.get()函數可以爲你做這件事,但它所做的只是將一組名稱/值對作爲查詢字符串參數序列化。

我不確定你的意思是不能使用AJAX。使用jQuery,你可以這樣做:

$.get("foo/bar", { foo: "foo", bar: "bar" }, 
    function(data){ 
    $("#myTarget").append(data); 
    }); 

假設當然返回值是HTML。

好吧,我想我明白了一點。如果你只想把一些對象轉換爲查詢字符串,那麼你就可以推出自己的功能很簡單:

function toQueryString(obj){ 
    var formattedVals = []; 

    for(var prop in obj){ 
     formattedVals.push(prop + "=" + obj[prop]); 
    } 

    return formattedVals.join("&"); 
} 

你可以看看它會通過調用它這樣工作:

var data = { foo: "foo", bar: "bar" }; 

alert(toQueryString(data)); 

無論如何,這應該讓你有90%的方式。

+0

+1的jQuery語法將JSON映射到查詢字符串參數。 – bryanmac 2012-02-28 04:58:10

+0

你的函數不適用於嵌套結構? – DerNalia 2012-02-28 05:21:45

+0

@DerNalia - 當然不是......如何用一個簡單的名稱值配對錶示一個嵌套結構?大多數實現需要一個簡單的對象或字典。 – Josh 2012-02-28 15:08:57