2012-02-28 3 views
0

GET 요청을하는 것은 쉽습니다. 앵커 태그의 href 속성에 URL을 지정하기 만하면됩니다.GET URL에 JSON 객체를 어떻게 추가합니까?

하지만 어떻게 JSON 개체를 해당 URL에 추가합니까?

jQuery를 통해이 작업을 수행해야한다고 추측하고 있지만 사용자 AJAX를 사용할 수 없거나 응답이 브라우저에 렌더링되지 않습니다.

지금까지 시도한 결과는 $j("#gen").attr("href", $j("#gen").attr("href") + "?" + JSON.stringify({object: data}));이지만 데이터가 추가되지는 않습니다. 이것은 onClick을 트리거합니다.

+1

당신이 렌더링되지 않습니다 AJAX 또는 응답을 사용할 수 없습니다 무슨 뜻 이죠? 지금 막 링크를 생성하려고합니까? – Josh

+0

네, HTTP GET 요청을 만들어서 서버가 내 브라우저를 리디렉션 할 수 있도록하고 싶습니다. 즉, 매개 변수의 데이터를 기반으로합니다. – DerNalia

+1

엄밀히 말하자면, jQuery가 필요 없다. JSON을 올바르게 인코딩하면된다 : 'link'. 그러나 나는 당신이 당신의 문제에 대한 충분한 정보 (문맥)를 제공한다고 생각하지 않는다. –

답변

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() 함수가 있지만 쿼리 문자열 매개 변수로 일련의 이름/값 쌍을 serialize하는 것뿐입니다.

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

+0

중첩 된 구조에서는 함수가 작동하지 않습니까? – DerNalia

+0

@DerNalia - 당연하지 ... 간단한 이름 값 쌍을 가진 중첩 구조를 얼마나 정확하게 나타낼까요? 대부분의 구현은 간단한 객체 또는 사전을 기대합니다. – Josh

관련 문제