【问题标题】:How to send multiple data fields via Ajax? [closed]如何通过 Ajax 发送多个数据字段? [关闭]
【发布时间】:2026-02-11 08:05:01
【问题描述】:

我卡住了:我正在尝试使用 AJAX 提交表单,但找不到通过 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) {...

我尝试了各种方法:

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

甚至像这样的东西只是为了测试目的:

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

但无论我尝试什么,我的 activity_save.php 中什么都没有,因此我的 SQL 中什么也没有。

那么,在我的 AJAX 调用中放入更多数据行的正确语法是什么?

【问题讨论】:

  • 处理输入数据的两种辅助形式都是有效的。您如何在 PHP 端访问它?您可以考虑使用 HTTP 嗅探器(PC 上的 Fiddler,Mac 上的 HTTPScoop 之类的东西),它会准确地向您显示通过网络传输的内容。
  • 我建议使用 firebug/chrome 来调试您的帖子数据。确保您获得的是 HTTP 代码 200,并且表单数据以您认为应该发布的方式发布。如果发布数据看起来一切正常,我将开始尝试调试您的 PHP 服务器端代码。
  • 使用 firebug 真的很有帮助,完全忘记了用它检查我的页面。 ://
  • 数据参数前后的**有什么用?
  • @heinkasner,我认为 ** 只是为了向读者展示作者想要强调的那一行。当代码准备好保存到文件时,必须删除**!

标签: jquery sql ajax


【解决方案1】:

正确的语法是:

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

此处指定:http://api.jquery.com/jQuery.ajax/

因此,如果这不起作用,我会提醒这些变量以确保它们具有值。

【讨论】:

  • 他在问题中特别指出:“我已经尝试了各种各样的东西:data: {status: status, name: name},
  • 我只是指出正确的语法并说问题一定是其他问题而不是语法
  • 看来我的语法是正确的,我相信我犯了一个非常愚蠢的 SQL 错误。
  • Re: 语法,注意键名是 '-' 例如data: { site-name: "*" } 不起作用。
  • 来自docs "数据选项可以包含key1=value1&key2=value2形式的查询字符串,或者{key1: 'value1', key2: 'value2'}形式的对象。如果使用后一种形式,数据在发送之前使用 jQuery.param() 转换为查询字符串。"
【解决方案2】:

您可以通过 JSON 或普通 POST 发送数据,这里是 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
      }
 });

如果你想通过普通帖子使用它,试试这个

 $.ajax({
      type: "POST",
      url: $('form').attr("action"),   
      data: $('#form0').serialize(),
      success: function (result) {
         // do something here
      }
 });

【讨论】:

  • .serialize() 未定义!
【解决方案3】:

用引号试试:

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

它必须工作正常。

【讨论】:

【解决方案4】:
var countries = new Array();
countries[0] = 'ga';
countries[1] = 'cd';

之后你可以这样做:

var new_countries = countries.join(',')

之后:

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

这东西以 JSON 字符串格式工作。

【讨论】:

  • 这个解决方案在尝试通过 ajax 传递数组时对我有用。将它加入一个字符串是解决方案。谢谢!
【解决方案5】:

根据http://api.jquery.com/jquery.ajax/

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

【讨论】:

    【解决方案6】:

    这个对我有用。

    这是我的 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>
    

    这是我使用 AJAX 的 jQuery:

    $("#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()
        }
      });
    });
    

    【讨论】:

      【解决方案7】:

      我是 ajax 的初学者,但我认为使用这种“数据:{状态:状态,名称:名称}”方法 数据类型必须设置为 JSON 即

      $.ajax({
      type: "POST",
      dataType: "json",
      url: "ajax/activity_save.php",
      data: {status: status, name: name},
      

      【讨论】:

      • 欢迎堆栈溢出。 dataType 是您希望从 服务器 获得的内容类型响应,而不是您发送的内容。您发送的数据将始终转换为foo=bar&amp;bar=foo
      【解决方案8】:

      使用这个

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

      我尝试了很多语法来使用 laravel 它适用于 laravel 4.2 + ajax。

      【讨论】:

        【解决方案9】:

        试试这个:

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

        【讨论】:

          【解决方案10】:

          我是 AJAX 新手,我已经尝试过,效果很好。

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

          【讨论】:

            【解决方案11】:

            尝试使用:

            $.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);
                }
            });
            

            【讨论】:

            • 或许有什么解释?
            【解决方案12】:

            在头疼了 2 天后,这对我有用;为什么我不能让 AJaX 的“数据”设置发送两个键/值(包括一个包含原始图像数据的变量)是一个谜,但这似乎是 jQuery.param() 函数 写给;

            用你的变量创建一个参数数组,不带引号:

            var params = { key_name1: var_1, key_name2: var_2  }; // etc.
            
            var ser_data = jQuery.param( params );   // arbitrary variable name
            

            使用变量 ser_data 作为您的数据值;

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

            文档在这里: https://api.jquery.com/jQuery.param/

            希望有帮助!

            【讨论】:

              最近更新 更多