繁体   English   中英

如何在Ajax中发送数组并将其作为数组在PHP中获取

[英]How to send array in Ajax and get it in PHP as array

我想在js中发送ajax数组,在php中将其作为数组获取,并使用sql插入。

我的ajax调用看起来像:

jQuery("#Save").click(function () {
  $(".linesView").each(function () {
    var action_name = "";
    if (window.current_category === "Expenses") {
      action_name = "Save_Expenses"
    } else if(window.current_category === "Incomes") {
      action_name = "Save_Incomes"
    }
    var line_id = $(this).attr("id").substring(5);
    var category = $("#CategoryValue_" + line_id).html();
    var date = $("#DateValue_" + line_id).html();
    var amount = $("#AmountValue_" + line_id).val();
    var repeated = $("#RepeatedValue_" + line_id).html();
    var note = $("#NoteValue_" + line_id).val();
    var data = json_encode([category,date,amount,repeated,note]);

    $.post("AjaxHandler.php", { "action_name": action_name, "data": data }, function () {
       //$("#ExpensesId_" + id).css('display', 'none');
    });
  });
});

需要获取ajax调用并添加数据(通过sql插入)的PHP代码如下所示:

if(isset($_POST['action_name','data'])) {
  $action_name = $_POST['action_name'];
  $data=json_decode($_POST['data']);
  $query = mysql_query("INSERT INTO Expenses (accountid, category, date, amount, repeated) VALUES ('$accountid', '$data[0]', '$data[1]', '$data[2]', '0')");
}

来自页面顶部的accountid ,我已经执行了删除操作,并且工作正常,因此该accountid 所有其他人,我不知道。

我尝试进行编码然后解码。 我不确定语法是否正确。 无论如何,如果我没有编写精美的代码,请告诉我它的外观。 也许我需要从数据中获取每个参数,而不是调用data[x]

使用JSON.stringify()

var data = ([category,date,amount,repeated,note]);
$.post("AjaxHandler.php", { "action_name": action_name, "data": JSON.stringify(data) }, function () {
  //$("#ExpensesId_" + id).css('display', 'none');
});

使用javascript中的JSON.stringify()将数据数组编码为JSON字符串。 在服务器端,使用json_decode()解码数据。

jQuery的:

jQuery("#Save").click(function() {
  $(".linesView").each(function() {
    var action_name = "";
    if (window.current_category === "Expenses") {
      action_name = "Save_Expenses"
    } else if (window.current_category === "Incomes") {
      action_name = "Save_Incomes"
    }
    var line_id = $(this).attr("id").substring(5);
    var category = $("#CategoryValue_" + line_id).html();
    var date = $("#DateValue_" + line_id).html();
    var amount = $("#AmountValue_" + line_id).val();
    var repeated = $("#RepeatedValue_" + line_id).html();
    var note = $("#NoteValue_" + line_id).val();
    var data = JSON.stringify([category, date, amount, repeated, note]);
    //-----------------^--- Array to JSON string 
    $.post("AjaxHandler.php", {
      "action_name": action_name,
      "data": data
    }, function() {
      //$("#ExpensesId_" + id).css('display', 'none');
    });
  });
});

PHP的:

if(isset($_POST['action_name','data'])){
    $action_name = $_POST['action_name'];
    $data=json_decode(json_decode($_POST['data']));
    //-----^--- decoding JSON string
    $query = mysql_query("INSERT INTO Expenses (accountid, category, date, amount, repeated) VALUES ('$accountid', '$data[0]', '$data[1]', '$data[2]', '0')");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM