Как передать параметры в $ ajax POST?

Я следовал учебнику, как указано в ссылке this. В приведенном ниже коде по какой-то причине данные не добавляются к URL в качестве параметров, но если я устанавливаю их непосредственно к URL, используя /?field1 = "hello"это работает.

$.ajax({
        url: 'superman',
        type: 'POST',
        data: { field1: "hello", field2 : "hello2"} ,
        contentType: 'application/json; charset=utf-8',
        success: function (response) {
            alert(response.status);
        },
        error: function () {
            alert("error");
        }
    }); 
Комментарии к вопросу (1)
Решение

Я бы порекомендовал вам использовать синтаксис jQuery $ .post или $.get для простых случаев:

$.post('superman', { field1: "hello", field2 : "hello2"}, 
    function(returnedData){
         console.log(returnedData);
});

Если вам нужно поймать случаи сбоя, просто сделайте это:

$.post('superman', { field1: "hello", field2 : "hello2"}, 
    function(returnedData){
         console.log(returnedData);
}).fail(function(){
      console.log("error");
});

Кроме того, если вы всегда отправляете строку JSON, вы можете использовать $ .getJSON или $ .post с еще одним параметром в самом конце.

$.post('superman', { field1: "hello", field2 : "hello2"}, 
     function(returnedData){
        console.log(returnedData);
}, 'json');
Комментарии (3)

Попробуйте использовать метод GET

var request = $.ajax({
    url: 'url',
    type: 'GET',
    data: { field1: "hello", field2 : "hello2"} ,
    contentType: 'application/json; charset=utf-8'
});

request.done(function(data) {
      // your success code here
});

request.fail(function(jqXHR, textStatus) {
      // your failure code here
});

Вы не можете видеть параметры в URL с методом POST.

Редактировать:

Уведомление об углублении: JqXHR.success (), jqXHR.error () и обратные вызовы jqXHR.complete () удаляются с jQuery 3.0. Вы можете использовать jqXHR.done (), jqXHR.fail () и jqXHR.always () вместо.

Комментарии (0)

Jquery.ajax не кодирует данные POST для вас автоматически так, как это делается для данных GET. Jquery ожидает, что ваши данные будут предварительно сформированы для добавления в тело запроса, которое будет отправлено непосредственно через провод.

Решение состоит в том, чтобы использовать функцию jQuery.param для создания строки запроса, которую ожидают большинство сценариев, обрабатывающих запросы POST.

$.ajax({
    url: 'superman',
    type: 'POST',
    data: jQuery.param({ field1: "hello", field2 : "hello2"}) ,
    contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
    success: function (response) {
        alert(response.status);
    },
    error: function () {
        alert("error");
    }
}); 

В этом случае метод param форматирует данные для:

field1=hello&field2=hello2

Документация Jquery.ajax говорит о том, что существует флаг под названием processData, который контролирует, выполняется ли эта кодировка автоматически или нет. В документации говорится, что по умолчанию используется «true», но это не то поведение, которое я наблюдаю при использовании «POST».

Комментарии (1)
    function FillData() {
    var param = $("#").val();
    $("#tbDetails").append("");
    $.ajax({
        type: "POST",/*method type*/
        contentType: "application/json; charset=utf-8",
        url: "Default.aspx/BindDatatable",/*Target function that will be return result*/
        data: '{"data":"' + param + '"}',/*parameter pass data is parameter name param is value */
        dataType: "json",
        success: function(data) {
               alert("Success");
            }
        },
        error: function(result) {
            alert("Error");
        }
    });   
}
Комментарии (0)

В POST-запросе параметры отправляются в теле запроса, поэтому вы не видите их в URL-адресе

Если хочешь их увидеть, меняйся

    type: 'POST',

к

    type: 'GET',

Обратите внимание, что в браузерах есть инструменты разработки, которые позволяют вам видеть полные запросы, которые выдает ваш код. В Chrome это на панели «Сеть».

Комментарии (0)
$.ajax(
   {
      type: 'post',
      url: 'superman',
      data: { 
        "field1": "hello",
        "field2": "hello1"
      },
      success: function (response) {
        alert("Success !!");
      },
      error: function () {
        alert("Error !!");
      }
   }
);

type: 'POST', добавит параметры к телу запроса , который не виден в URL , а type: 'GET', добавляет параметры по URL, который виден .

Большинство популярных веб-браузеров содержат сетевые панели, которые отображают полный запрос .

На сетевой панели выберите XHR , чтобы увидеть запросы .

Это также можно сделать с помощью этого.

$.post('superman',
      { 
        'field1': 'hello', 
        'field2': 'hello1'
      },
      function (response) {
        alert("Success !");
      }
    );
Комментарии (0)

Вы можете сделать это, используя $ .ajax или $ .post

Использование $ .ajax:

    $.ajax({
      type: 'post',
      url: 'superman',
      data: { 
        'field1': 'hello', 
        'field2': 'hello1'
      },
      success: function (response) {
        alert(response.status);
      },
      error: function () {
        alert("error");
      }
   });

Использование $ .post:

    $.post('superman',
      { 
        'field1': 'hello', 
        'field2': 'hello1'
      },
      function (response, status) {
        alert(response.status);
      }
    );
Комментарии (1)

Ваш код был правильным, за исключением того, что вы не передаете ключи JSON в качестве строк.

Вокруг него должны быть двойные или одинарные кавычки

{"field1": "hello", "field2": "hello2"}

$.ajax(
   {
      type: 'post',
      url: 'superman',
      data: { 
        "field1": "hello", // Quotes were missing
        "field2": "hello1" // Here also
      },
      success: function (response) {
        alert(response);
      },
      error: function () {
        alert("error");
      }
   }
);
Комментарии (0)

Для отправки параметров в url в методе POST Вы можете просто добавить его в url следующим образом:

$.ajax({
    type: 'POST',
    url: 'superman?' + jQuery.param({ f1: "hello1", f2 : "hello2"}),
    // ...
}); 
Комментарии (1)