jQuery 게시 JSON


194

업데이트 : var value서버에 전달하고 싶습니다

안녕하세요, 같은 오래된, 같은 오래된 ... :)

라는 폼 <form id="testForm" action="javascript:test()">과라는 코드 영역이 있습니다.<code id="testArea"></code>

이 코드를 사용하여 코드 영역에 데이터를 문자열 화하고 표시합니다.

var formData = form2object('testForm');
document.getElementById('testArea').innerHTML = JSON.stringify(formData, null, '\t');
var value = JSON.stringify(formData, null, '\t');

내가 원하는 것은이 데이터를 JSON 파일로 보내는 것입니다. 이 프로젝트에서 일하고 있습니다 : http://ridegrab.com/profile_old/Submit Query 버튼을 누르면 페이지 헤드가 나타납니다.

또한이 스크립트를 사용하여 데이터를 보내려고합니다.

    function authenticate(userName, password) {
    $.ajax
    ({
        type: "POST",
        //the url where you want to sent the userName and password to
        url: 'username:password@link to the server/update',
        dataType: 'json',
        async: false,
        //json object to sent to the authentication url
        data: '{"userName": "' + userName + '", "password" : "' + password + '"}',
        success: function () {

        alert("Thanks!"); 
        }
    })
}

다시 말하지만, 원하는 JSON 데이터를 서버로 보낼 수 있습니다. 내 서버가 update or POST올바른 위치의 데이터로 설정되어 있습니다.


나는 그것이 작동 :) 내가 서버에 데이터를 전송하기 위해 함께 넣어하는 방법을 모르겠어요 ... 난 대체해도 할 수 없습니다 datadata: value,... !! ??
Patrioticcow

첫째, 연결 문제가 아닌 것이 확실합니까? error함수 를 할당하면 함수가 호출됩니까? 그렇다면 어떤 오류가 있습니까?
Wiseguy

1
1 년이 지났지 만 그 방법에 대한 @Patrioticcow의 최신 질문에 대답 할 것입니다. ajax 메소드로 보낸 "성공"옵션이 표시됩니까? "오류"와 동일한 작업을 수행하십시오. "error : MyErrorHandlingFunction"또는 "error : function (error) {[여기에 코드 처리 오류]}"와 같이
vbullinger

답변:


220

'data'는 문자열 화 된 JavaScript 객체 여야합니다.

data: JSON.stringify({ "userName": userName, "password" : password })

를 보내려면 다음 주소 formData로 전달하십시오 stringify.

data: JSON.stringify(formData)

일부 서버에는 다음과 같은 application/json컨텐츠 유형이 필요합니다 .

contentType: 'application/json'

비슷한 질문에 대한 자세한 답변이 여기에 있습니다. Jquery Ajax json을 웹 서비스에 게시


@tasos 나는 이것이 당신이 추구하는 것이라고 생각합니다 : stackoverflow.com/questions/5806971/…
Kyle Wild

여기에 부정확 함을 메우기; 이것은 간단한 시나리오에서는 잘 작동하지만 URL 인코딩 메시지는 특히 배열이 많은 경우 매우 문제가 될 수 있습니다.
FMM

@ FMM and Jonas N-정확성을 위해 답변을 업데이트하는 방법을 알아낼 수 있습니까? jQuery 문서의 예제 (여기 : api.jquery.com/jQuery.post )는 JS 객체 또는 문자열을 게시 할 수있는 것처럼 보이게 만듭니다 .jQuery가 필요한 모든 문자열 직렬화를 처리한다고 믿었습니다. .
Kyle Wild

Patrioticcow는 말했다 : "var 값에서 json을 보내려면 어떻게해야합니까?"값이 배열 또는 객체가 아닌 한 이것은 유효한 JSON이 아닙니다.
andsens

1
예를 들어 데이터에 다음과 같은 목록이 포함되어있을 때 발생하는 상황을 고려하십시오 { foo: [1,2,3], bar: 'baz' }. 이것은 foo%5B%5D=1&foo%5B%5D=2&foo%5B%5D=3&bar=baz(이스케이프 처리되지 않은) 형식으로 인코딩됩니다 foo[]=1&foo[]=2&foo[]=3&bar=baz. 서버 측에서 원하지 않는 것 같습니다.
FMM

271

이처럼 JSON을 게시하십시오.

$.ajax(url, {
    data : JSON.stringify(myJSObject),
    contentType : 'application/json',
    type : 'POST',
    ...

객체를 settings.data로 전달하면 jQuery는 객체를 쿼리 매개 변수로 변환하고 기본적으로 application / x-www-form-urlencoded 데이터 유형으로 전송합니다. charset = UTF-8, 아마도 당신이 원하지 않는 것


@ TimLovell-Smith는 jQuery가 data어떤 경우에도 문자열을 처리하지 않으므로 차이가 없습니다.
Phil

2

이 게시 요청을 교차 도메인으로 보내는 경우이 링크를 확인해야합니다.

https://stackoverflow.com/a/1320708/969984

서버가 교차 사이트 게시 요청을 수락하지 않습니다. 따라서 교차 사이트 요청을 허용하도록 서버 구성을 변경해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.