jQuery는 POST 매개 변수로 문자열을 보냅니다.


97

문자열을 ajax Post 매개 변수로 보내고 싶습니다.

다음 코드 :

$.ajax({
   type: "POST",
   url: "http://nakolesah.ru/",
   data: 'foo=bar&ca$libri=no$libri',
   success: function(msg){
     alert('wow'+msg);
   }
});

작동하지 않는다. 왜?


2
나는 당신이 PHP 개발자이고 다음과 같은 일을 한 것도 알고 있습니다 ca$libri=no$libri. 여기서 확인하십시오 ... JS가 있어야하는 곳에 PHP 구조를 실수로 사용하려고하지 않았습니까? $libri이 문자열에 변수 값을 포함하려면 다음을 시도하십시오 'foo=bar&ca' + $libri + '=no' + $libri..
treeface

nono :) 나는 PHP로 js를 생성하는 모든 순간을 이해합니다. :) APS의 ajax 변수 이름입니다. 일부 사이트를 ajax로 구문 분석하는 파서를 만듭니다. 그리고 이제 왜 오류가 발생했는지 알았습니다. coz 교차 도메인 쿼리입니다. 나는 :) 내 서버에 첫 번째 쿼리 만들 수 있어야합니다
미르 고로드

답변:


181

다음과 같이 시도하십시오.

$.ajax({
    type: 'POST',
    // make sure you respect the same origin policy with this url:
    // http://en.wikipedia.org/wiki/Same_origin_policy
    url: 'http://nakolesah.ru/',
    data: { 
        'foo': 'bar', 
        'ca$libri': 'no$libri' // <-- the $ sign in the parameter name seems unusual, I would avoid it
    },
    success: function(msg){
        alert('wow' + msg);
    }
});

1
데이터 : {foo : 'bar'}, 아포스트로피없이 '?
Marius Stănescu 2013 년

6
@MariusStanescu, 둘 다 동등한 자바 스크립트 구문입니다.
Darin Dimitrov 2013 년

3
또한 ca $ libri의 $가 완벽하게 괜찮다고 확신합니다
Michael Crook

문자열로 게시하는 것에 관한 질문에 대답하지 않습니다 :(, 아래 답변 참조
Andrew

이것은 작동하지만 그렇지 않습니다 : foo : 'bar'. 나는 양측에 현 기호를 추가하지 않은 이유없이 이틀을 보냈다!
Eugen Sunic

39
$.ajax({
    type: 'POST',    
    url:'http://nakolesah.ru/',
    data:'foo='+ bar+'&calibri='+ nolibri,
    success: function(msg){
        alert('wow' + msg);
    }
});

15
그래서 $ .post 데이터를 문자열로 보내는 방법을 알아보기 위해 여기에 왔습니다. 받아 들여진 대답은 전혀 도움이되지 않습니다. 감사합니다.
chiliNUT

동의했습니다. 개발중인 프레임 워크에 문자열이 필요한 상황도있었습니다. 좋은 대답이었습니다. 내 상황에서는 데이터 옆에있는 변수에 문자열을 넣어이 작업을 수행 할 수있었습니다. 문자열의 형식은 '? var = value & var2 = value2'였습니다.
Joseph Astrahan

13

나는 그들이 당신의 질문을 이해하지 못했다는 것을 압니다. 대답은 다음과 같이 ajax 호출에 "전통적인"매개 변수를 추가하는 것입니다.

$.ajax({
  traditional: true,
  type: "POST",
  url: url,
  data: custom ,
  success: ok,
 dataType: "json"
});

그리고 문자열로 전달 된 매개 변수와 함께 작동합니다.


감사! 이것은 내 하루를 구합니다!
날엔 TT

11

비슷한 응용 프로그램의 경우 다음 dataJSON.stringify()같이 개체 를 래핑해야 했습니다.

data: JSON.stringify({ 
  'foo': 'bar', 
  'ca$libri': 'no$libri'
}),

API는 REST 클라이언트와 함께 작동했지만 브라우저에서 jquery ajax와 함께 작동하지 못했습니다. stringify가 해결책이었습니다.


왜 우리가 이것을해야 했습니까?
Renoir Reis

확실하지 않지만 응답의 일부 문자는 강제하지 않는 한 문자열로 간주되지 않아야합니다.
Dylan Valade

4

이것이 여전히 실제인지 확실하지 않습니다. 미래의 독자를위한 것입니다. 정말로 원하는 것이 URL의 일부로 매개 변수를 전달하는 것이라면 아마도 jQuery.param ()을 사용해야 합니다.


1

귀하의 질문에 대한 직접적인 대답은 아닙니다. 그러나 다음은 저에게 사용되는 유일한 구문입니다.

data: '{"winNumber": "' + win + '"}',

그리고 매개 변수 이름이 서버 메소드의 인수와 일치합니다.


1

나는 또한이 정확한 문제에 직면했습니다. 그러나 나는 해결책을 얻었고 완벽하게 작동했습니다. 이미 자바 스크립트 함수에 의해 생성 된 매개 변수를 전달해야했습니다. 그래서 아래 코드가 저에게 효과적입니다. 백엔드로 ColdFusion 을 사용했습니다 . 매개 변수를 변수로 직접 사용했습니다.

                    $.ajax({
                    url: "https://myexampleurl.com/myactionfile.cfm",
                    type: "POST",
                    data : {paramert1: variable1,parameter2: variable2},
                    success: function(data){
                        console.log(data);                              
                    } )};

0

Ajax의 문자열 매개 변수에 문자열 값을 전달할 때 문제가 발생했습니다. 너무 많은 인터넷 검색 끝에 다음과 같은 맞춤형 솔루션을 찾았습니다.

var bar = 'xyz';
var calibri = 'no$libri';

$.ajax({
   type: "POST",
   dataType: "json",
   contentType: "application/json; charset=utf-8",
   url: "http://nakolesah.ru/",
   data: '{ foo: \'' + bar + '\', zoo: \'' + calibri + '\'}',
   success: function(msg){
       alert('wow'+msg);
   },
});

여기에서 barcalibri 는 두 개의 문자열 변수이며 웹 메서드의 각 문자열 매개 변수에 어떤 문자열 값이든 전달할 수 있습니다.

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