Bagaimana cara mengirim beberapa bidang data melalui Ajax? [Tutup]

138

Saya macet: Saya mencoba mengirimkan formulir menggunakan AJAX, tetapi saya tidak dapat menemukan cara untuk mengirim beberapa bidang data melalui panggilan AJAX saya.

$(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) {...

Saya sudah mencoba segala macam hal:

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

Atau bahkan hal-hal seperti ini hanya untuk tujuan pengujian:

data: "status=testing&name=ronny",

Tapi apa pun yang saya coba, saya tidak mendapatkan apa- activity_save.phpapa di SQL saya.

Jadi, sintaks apa yang benar untuk menempatkan lebih banyak baris data dalam panggilan AJAX saya?

deadconversations
sumber
Kedua bentuk sekunder dari penanganan data masukan adalah valid. Bagaimana Anda mengakses ini di sisi PHP? Anda dapat mempertimbangkan HTTP sniffer (Fiddler di PC, seperti HTTPScoop di Mac), yang akan menunjukkan dengan tepat apa yang bergerak melintasi kabel.
John Green
Saya sarankan menggunakan firebug / chrome untuk men-debug data posting Anda. Pastikan Anda mendapatkan Kode HTTP 200 dan bahwa data formulir sedang diposting sesuai keinginan Anda. Jika semuanya terlihat benar dengan data posting, saya akan mulai mencoba men-debug kode sisi server PHP Anda.
Kyle Rogers
Menggunakan firebug sangat membantu, benar-benar lupa memeriksa halaman saya dengannya. : /
deadconversations
Apa gunanya ** di depan dan di akhir parameter data?
heinkasner
1
@heinkasner, saya pikir ** hanya ada untuk menunjukkan kepada pembaca baris mana yang ingin ditekankan oleh penulis. ** harus dihapus ketika kode siap untuk disimpan ke file!
Tandai

Jawaban:

260

Sintaks yang benar adalah:

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

Sebagaimana ditentukan di sini: http://api.jquery.com/jQuery.ajax/

Jadi jika itu tidak berhasil, saya akan memperingatkan variabel-variabel itu untuk memastikan mereka memiliki nilai.

Avitus
sumber
4
Dia menunjukkan secara khusus dalam pertanyaan: "Saya telah mencoba segala macam hal: data: {status: status, name: name},"
Ry-
20
Saya baru saja menunjukkan sintaks yang benar dan mengatakan bahwa masalahnya pasti sesuatu yang lain, bukan sintaksnya
Avitus
3
Sepertinya sintaks saya benar, saya yakin saya telah membuat kesalahan SQL yang sangat bodoh.
deadconversations
2
Re: sintaks, perhatikan bahwa nama kunci adalah '-' misalnya data: { site-name: "StackOverflow" }tidak akan berfungsi.
moey
Dari dokumen "Opsi data dapat berisi string kueri dari formulir key1=value1&key2=value2, atau objek dari formulir {key1: 'value1', key2: 'value2'}. Jika formulir terakhir digunakan, data diubah menjadi string kueri menggunakan jQuery.param () sebelum dikirim. "
Jay Blanchard
33

Anda dapat mengirim data melalui JSON atau melalui POST biasa, berikut adalah contoh untuk 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 something here
      }
 });

Jika Anda ingin menggunakannya melalui posting biasa coba ini

 $.ajax({
      type: "POST",
      url: $('form').attr("action"),   
      data: $('#form0').serialize(),
      success: function (result) {
         // do something here
      }
 });
k-dev
sumber
.serialize()tak terdefinisi!
Amirhossein Mehrvarzi
9

Coba dengan kutipan:

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

Ini harus bekerja dengan baik.

Alberthoven
sumber
4
+1. BTW ini sebenarnya data: {status: "status", name: "name"} api.jquery.com/jquery.ajax
Amir
6
var countries = new Array();
countries[0] = 'ga';
countries[1] = 'cd';

setelah itu Anda bisa melakukan seperti:

var new_countries = countries.join(',')

setelah:

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

Benda ini berfungsi sebagai format string JSON.

Shahin
sumber
Solusi ini berfungsi untuk saya ketika mencoba meneruskan array melalui ajax. Menggabungkannya menjadi sebuah string adalah solusinya. Terima kasih!
Brian Powell
3

Menurut http://api.jquery.com/jquery.ajax/

$.ajax({
  method: "POST",
  url: "some.php",
  data: { name: "John", location: "Boston" }
})
.done(function( msg ) {
  alert( "Data Saved: " + msg );
});
Amir
sumber
3

Yang ini berhasil untuk saya.

Inilah PHP saya:

<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>

Inilah jQuery saya menggunakan 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()
    }
  });
});
TheGreenGentleman
sumber
2

Saya seorang pemula di ajax tapi saya pikir untuk menggunakan "data: {status: status, nama: nama}" metode tipe data harus disetel ke JSON yaitu

$.ajax({
type: "POST",
dataType: "json",
url: "ajax/activity_save.php",
data: {status: status, name: name},
Shan
sumber
3
Selamat datang di stack overflow. dataTypeadalah respons jenis konten yang Anda harapkan dari server - bukan yang Anda kirim. Data yang Anda kirim akan selalu dikonversi foo=bar&bar=foo.
h2ooooooo
1

Gunakan ini

data: '{"username":"' + username + '"}',

Saya mencoba banyak sintaks untuk bekerja dengan laravel, itu berfungsi untuk saya untuk laravel 4.2 + ajax.

Kanin Peanviriyakulkit
sumber
1

Coba ini:

$(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) {...
pengguna4184048
sumber
1

Saya baru mengenal AJAX dan saya telah mencoba ini dan bekerja dengan baik.

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();
}
dda
sumber
1

Coba gunakan:

$.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);
    }
});
pengguna8161624
sumber
1
Beberapa penjelasan mungkin?
cs95
0

Inilah yang berhasil untuk saya setelah 2 hari menggaruk kepala; mengapa saya tidak bisa mendapatkan pengaturan 'data' AJaX untuk mengirim dua kunci / nilai (termasuk variabel yang berisi data gambar mentah) adalah sebuah misteri, tetapi tampaknya itulah fungsi jQuery.param () yang ditulis;

buat array params dengan variabel Anda, tanpa tanda kutip:

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

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

Gunakan ser_data variabel sebagai nilai data Anda;

      $.ajax({
       type: 'POST',
       url: '../php_handler_url.php',
       data: ser_data,
    }).success(function(response) {
       alert(response);
    });

Dokumentasi ada di sini: https://api.jquery.com/jQuery.param/

Semoga membantu!

big_lion
sumber