Como enviar vários campos de dados através do Ajax? [fechado]

Estou a tentar enviar um formulário com o AJAX, mas não consigo enviar vários campos de dados através da minha chamada do AJAX.

$(document).ready(function() {
  $("#btnSubmit").click(function()  {
    var status = $("#activitymessage").val();
    var name = "Ronny";
    $.ajax({
      type: "POST",
      url: "ajax/activity_save.php",
      **data: "status="+status+"name="+name"**,
      success: function(msg) {...
Já tentei todo o tipo de coisas.
data: {status: status, name: name},

ou mesmo coisas como esta só para fins de teste:

data: "status=testing&name=ronny",
Mas seja o que for que eu tente, Não tenho nada no meu SQL.

Então, qual é a sintaxe correta para colocar mais linhas de dados na minha chamada AJAX?

Author: TylerH, 2011-05-22

12 answers

A sintaxe correcta é:

data: {status: status, name: name},

Tal como se especifica aqui: http://api.jquery.com/jQuery.ajax/

Então, se isso não funcionar, eu alertaria essas variáveis para garantir que elas têm valores.
 186
Author: Avitus, 2018-01-16 21:34:31

Você pode enviar dados através de Json ou através de POST normal, aqui está um exemplo para Json.

 var value1 = 1;
 var value2 = 2;
 var value3 = 3;   
 $.ajax({
      type: "POST",
      contentType: "application/json; charset=utf-8",
      url: "yoururlhere",
      data: "{'data1':'" + value1+ "', 'data2':'" + value2+ "', 'data3':'" + value3+ "'}",
      success: function (result) {
           //do somthing here
      }
 });

Se você quiser usá-lo através do post normal tente este

 $.ajax({
      type: "POST",
      url: $('form').attr("action"),   
      data: $('#form0').serialize(),
      success: function (result) {
         // do somthing here
      }
 });
 28
Author: k-dev, 2018-01-16 21:35:41

Tenta com aspas:

data: {"status": status, "name": name}
Deve funcionar bem.
 5
Author: Alberthoven, 2014-03-19 13:10:00
var countries = new Array();
countries[0] = 'ga';
countries[1] = 'cd';

Depois disso podes fazer como:

var new_countries = countries.join(',')

Depois de:

$.ajax({
    type: "POST",
    url: "Concessions.aspx/GetConcessions",
    data: new_countries,
    ...

Esta coisa funciona como formato JSON string.

 4
Author: Shahin, 2011-05-22 05:36:53

De Acordo com http://api.jquery.com/jquery.ajax/

$.ajax({
  method: "POST",
  url: "some.php",
  data: { name: "John", location: "Boston" }
})
.done(function( msg ) {
  alert( "Data Saved: " + msg );
});
 3
Author: Amir, 2015-07-27 14:35:39
Este funciona para mim. Aqui está o meu PHP.
<div id="pageContent">
  <?php
    while($row = mysqli_fetch_assoc($stmt)) {
  ?>
  <br/>
  <input id="vendorName_" name="vendorName_<?php echo $row["id"]; ?>" value='<?php echo $row["vendorName"]; ?>'>
  <input id="owner_" name="owner_<?php echo $row["id"]; ?>" value='<?php echo $row["owner"]; ?>'>
  <input id="city_" name="city_<?php echo $row["id"]; ?>" value='<?php echo $row["city"]; ?>'>
  <button id="btn_update_<?php echo $row["id"]; ?>">Update</button>
  <button id="btn_delete_<?php echo $row["id"]; ?>">Delete</button>
  <?php
    }
  ?>
  </br></br>
  <input id = "vendorName_new" value="">
  <input id = "owner_new" value="">
  <input id = "city_new" value="">
  <button id = "addNewVendor" type="submit">+ New Vendor</button>
</div>
Aqui está o meu jQuery a usar AJAX.
$("#addNewVendor").click(function() {
  alert();
  $.ajax({
    type: "POST",
    url: "create.php",
    data: {vendorName: $("#vendorName_new").val(), owner: $("#owner_new").val(), city: $("#city_new").val()},
    success: function(){
      $(this).hide();
      $('div.success').fadeIn();
      showUsers()
    }
  });
});
 3
Author: TheGreenGentleman, 2015-07-27 14:39:07

Sou um principiante no ajax, mas penso em usar este método de" dados: {Estado: Estado, nome: nome}" o tipo de dados deve ser definido como JSON i. e

$.ajax({
type: "POST",
dataType: "json",
url: "ajax/activity_save.php",
data: {status: status, name: name},
 2
Author: Shan, 2013-09-26 16:11:22

Utilize este

data: '{"username":"' + username + '"}',
Tento uma grande sintaxe para trabalhar com o laravel. funciona para mim para o laravel 4,2 + ajax.
 1
Author: Kanin Peanviriyakulkit, 2014-07-26 15:18:16

Tenta isto:

$(document).ready(function() {
  $("#btnSubmit").click(function() {
    var status = $("#activitymessage").val();
    var name = "Ronny";
    $.ajax({
      type: "POST",
      url: "ajax/activity_save.php",
      data: {'status': status, 'name': name},
        success: function(msg) {...
 1
Author: user4184048, 2015-07-27 14:36:36
Sou novo em AJAX e já tentei isto e funciona bem.
function q1mrks(country,m) {
  // alert("hellow");
  if (country.length==0) {
    //alert("hellow");
    document.getElementById("q1mrks").innerHTML="";
    return;
  }
  if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  } else {
    // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
      document.getElementById("q1mrks").innerHTML=xmlhttp.responseText;
    }
  }
  xmlhttp.open("GET","../location/cal_marks.php?q1mrks="+country+"&marks="+m,true);
  //mygetrequest.open("GET", "basicform.php?name="+namevalue+"&age="+agevalue, true)
  xmlhttp.send();
}
 1
Author: dda, 2015-07-27 14:41:47

Aqui está o que funciona para mim depois de 2 dias de coçar a cabeça; por que eu não consegui obter a configuração de 'dados' AJaX para enviar duas chaves/valores (incluindo uma variável contendo dados de imagem raw) foi um mistério, mas isso parece ser o que o jQuery.a função param () foi escrita para;

Crie uma lista de Parâmetros com as suas variáveis, sem aspas:

var params = { key_name1: var_1, key_name2: var_2  }; // etc.

var ser_data = jQuery.param( params );   // arbitrary variable name

Utilize a variável ser_data como valor dos seus dados;

      $.ajax({
       type: 'POST',
       url: '../php_handler_url.php',
       data: ser_data,
    }).success(function(response) {
       alert(response);
    });
A documentação está aqui.: https://api.jquery.com/jQuery.param/ Espero que isso ajude!
 0
Author: big_lion, 2016-06-22 21:47:03

Tente usar:

          $.ajax({
                type: "GET",
                url: "something.php",
                data: { "b": data1, "c": data2 },   
                dataType: "html",
                beforeSend: function(){  },
                error: function(){
                      alert("Error");
                },
                success: function(data){                                                    
                      $("#result").empty();
                      $("#result").append(data);

                }
          });


    });
 -1
Author: user8161624, 2017-06-14 16:03:39