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. Просто перевірте, щоб бути впевненим тут ... Ви впевнені, що не випадково намагаєтесь використовувати конструкції PHP там, де мають бути JS? Якщо ви хочете включити значення $libriзмінної в цьому рядку, спробуйте наступне: 'foo=bar&ca' + $libri + '=no' + $libri.
treeface

nono :) Я розумію всі моменти генерації js за допомогою php :) це назви змінних ajax в APS. Я створюю аналізатор, який розбирає якийсь сайт з ajax. І тепер я зрозумів, чому помилка. Це запит на міждомен. Я повинен створити запит спочатку на своєму сервері :)
Миргород

Відповіді:


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

6
@MariusStanescu, обидва еквівалентні синтаксису javascript.
Дарін Димитров

3
також впевнений, що $ у ca $ libri ідеально
Майкл Крук

Не відповідає на запитання щодо публікації в якості рядка :(, див. Відповідь нижче.
Ендрю

Це працює, але це не так: foo: 'bar'. Я провів 2 дні безпричинно, я не додав знаки рядків з обох сторін !!!
Євген Суніч

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'
Джозеф Астрахан

13

Я бачу, що вони не зрозуміли вашого запитання. Відповідь: додайте параметр "традиційний" до виклику Ajax таким чином:

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

І це буде працювати з параметрами, ПРАВЕНИМИ РЯДКОЮ.


Дякую! Це рятує мій день!
Dat TT

11

Для подібного додатка мені довелося обернути мій dataоб’єкт JSON.stringify()таким чином:

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

API працював з клієнтом REST, але не зміг змусити його працювати з jquery ajax у браузері. рішенням був stringify.


Чому ми повинні були це зробити?
Ренуар Рейс

Не впевнений, але деякі символи у відповіді не повинні вважатися рядками, якщо не вимушені.
Ділан Валаде

4

Не впевнений, чи це все ще актуально .. лише для майбутніх читачів. Якщо ви дійсно хочете передати свої параметри як частину URL-адреси, вам слід скористатися jQuery.param () .


1

Не пряма відповідь на ваше запитання. Але наступний єдиний синтаксис, який раніше працював у мене -

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

І ім’я параметра збігається з аргументом методу сервера


1

Я також зіткнувся з цією точною проблемою. Але я отримав рішення, і воно спрацювало чудово. Мені потрібно було передати параметри, які вже створені функцією javascript. Отже нижче код працює для мене. Я використовував 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);
   },
});

Тут бар і калібри - це дві рядкові змінні, і ви можете передавати будь-яке значення рядка відповідним рядковим параметрам у веб-методі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.