jQuery - 将表单行数据发送到外部PHP文件

时间:2015-03-31 16:34:59

标签: php jquery mysql ajax mysqli

我需要一些帮助来解决问题。

我试图将一些数据从表单ROW发送到php文件。

这是第一个PHP代码(它在回声和值中来自MySQLi查询):

<form id=\"comedivid\" method=\"post\">
    <input class=\"numer-qua\" type=\"number\" id=\"dadivid\" min=\"0\" max=".$_GET['qua']." autofocus autocomplete=\"off\" name=\"dadivid\" maxlength=\"4\" size=\"5\">
    <input type=\"hidden\" value=\"".$row["id_tes"]."\" name=\"ord\" id=\"ord\">
    <input type=\"hidden\" value=\"".$_GET['codice']."\" name=\"cod\" id=\"cod\">
    <input type=\"hidden\" value=\"".$_GET['qua']."\" name=\"arr\" id=\"arr\">
    <input type=\"hidden\" value=\"".$row['descri']."\" name=\"desc\" id=\"desc\">
    <input type=\"hidden\" value=\"".$row['unimis']."\" name=\"um\" id=\"um\">
    <input type=\"hidden\" value=\"".$row['quanti']."\" name=\"qua\" id=\"qua\">
    <input type=\"hidden\" value=\"".$row['prelis']."\" name=\"pre\" id=\"pre\">
    <input type=\"hidden\" value=\"".$row['sconto']."\" name=\"sco\" id=\"sco\">
    <input type=\"hidden\" value=\"".$row['codvat']."\" name=\"cva\" id=\"cva\">
    <input type=\"hidden\" value=\"".$row['pervat']."\" name=\"iva\" id=\"iva\">
    <input type=\"hidden\" value=\"".$row['codric']."\" name=\"ric\" id=\"ric\">

    <button id=\"dividili\" class=\"btn btn-blue\" type=\"submit\"><i class=\"fa fa-copy\"> Dividi Riga</i></button>
            \n";

表单包含在表格中。查询可能会给出更多结果。

这是我的AJAX代码:

$("#dividili").click(function(){
$(this).closest("form#comedivid").submit(function(event) {
    event.preventDefault();
    var dadivid = $("#dadivid").val();
    var ord = $("#ord").val();
    var cod = $("#cod").val();
    var arr = $("#arr").val();
    var desc = $("#desc").val();
    var um = $("#um").val();
    var qua = $("#qua").val();
    var pre = $("#pre").val();
    var sco = $("#sco").val();
    var cva = $("#cva").val();
    var iva = $("#iva").val();
    var ric = $("#ric").val();


    $.ajax({
        type: "POST",
        url: "../../modules/acquis/dividi.php",
        data: "dadivid=" + dadivid + "&ord=" + ord + "&cod=" + cod + "&arr=" + arr + "&desc=" + desc + "&um=" + um + "&qua=" + qua + "&pre=" + pre + "&sco=" + sco + "&cva=" + cva + "&iva=" + iva + "&ric=" + ric,
        success: function(){alert('success');}
    });
});

});

它无法正常工作,没有数据发送到网址。

是因为表格是多行吗? 或者我的代码中有错误吗?

我也尝试过序列化,没有结果。

以下代码:

$("#dividili").click(function(e){ 

    $.ajax( {
      type: "POST",
      url: "../../modules/acquis/dividi.php",
      data: $('#comedivid').serialize(),
      success: function( response ) {}
    });
});

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:0)

我建议使用serialize()

$("#dividili").click(function(){
$(this).closest("form#comedivid").submit(function(event) {
    event.preventDefault();

    var form_data = $('form#comedivid').serialize();
    // or
    var form_data = $(this).serialize();

    // try to output that just to make sure you are doing it right
    console.log( form_data );
    // or
    alert( form_data );

    $.ajax({
        type    : "POST",
        url     : "../../modules/acquis/dividi.php",
        data    : form_data,
        success : function(){alert('success');}
    });
});

由于您已经尝试过了,并且如果输出正常,则说明PHP存在问题,因此请尝试在文件开头输出所收到的内容:

<?php

echo '<pre>';
print_r( $_POST );// or $_REQUEST for both $_POST and $_GET
echo '</pre>';
die;

// the rest of your code...

如果PHP能够很好地接收所有内容,则需要确保您使用正确的方式来获取数据,例如$dadivid = $_POST["dadivid"];

答案 1 :(得分:0)

jQuery的“序列化”方法使数据像获取查询表单一样。

因此,数据长度在apache配置中会受到限制。

尝试使用此自定义方法。

(function($) {
    $.fn.serializeObject = function () {
        "use strict";
        var result = {};
        var extend = function (i, element) {
            var node = result[element.name];
            if ('undefined' !== typeof node && node !== null) {
                if ($.isArray(node)) {
                    node.push(element.value);
                } else {
                    result[element.name] = [node, element.value];
                }
            } else {
                result[element.name] = element.value;
            }
        };
        $.each(this.serializeArray(), extend);
        return result;
    };
});

如何使用与默认的jQuery'serialize'方法相同。