jQuery отправляет строку в качестве параметров POST - PullRequest
87 голосов
/ 19 февраля 2011

Я хочу отправить строку в качестве параметра Post ajax.

Следующий код:

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

Не работает.Почему?

Ответы [ 7 ]

169 голосов
/ 19 февраля 2011

Попробуй так:

$.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);
    }
});
35 голосов
/ 15 декабря 2012
$.ajax({
    type: 'POST',    
    url:'http://nakolesah.ru/',
    data:'foo='+ bar+'&calibri='+ nolibri,
    success: function(msg){
        alert('wow' + msg);
    }
});
12 голосов
/ 18 ноября 2014

Я вижу, что они не поняли ваш вопрос. Ответ таков: добавьте «традиционный» параметр к вашему вызову ajax следующим образом:

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

И он будет работать с параметрами, пройденными как строка.

9 голосов
/ 20 октября 2014

Для аналогичного приложения мне пришлось обернуть мой data объект JSON.stringify() следующим образом:

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

API работал с REST-клиентом, но не смог заставить его работать с jquery ajax в браузере. stringify был решением.

4 голосов
/ 18 февраля 2013

Не уверен, что это все еще актуально ... только для будущих читателей.Если вы действительно хотите передать свои параметры как часть URL, вам, вероятно, следует использовать jQuery.param () .

1 голос
/ 25 июня 2014

Не прямой ответ на ваш вопрос. Но ниже приведен единственный синтаксис, который работал для меня -

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

И имя параметра соответствует аргументу метода сервера

0 голосов
/ 23 сентября 2015

Я столкнулся с проблемой передачи строкового значения в строковые параметры в Ajax.После стольких поисков в Google я нашел решение, как показано ниже.

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);
   },
});

Здесь bar и calibri - две строковые переменные, и вы можете передатьлюбое строковое значение для соответствующих строковых параметров в веб-методе.

...