我需要一些帮助来解决问题。
我正在尝试将一些数据从表单ROW发送到php文件。
这是第一个php代码(它在echo中,值来自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');}
});
});
});
它不起作用,没有数据发送到URL。
是因为表单在更多的行中吗?或者我的代码有错误吗?
我也尝试了序列化,但没有结果。
这是代码:
$("#dividili").click(function(e){
$.ajax( {
type: "POST",
url: "../../modules/acquis/dividi.php",
data: $('#comedivid').serialize(),
success: function( response ) {}
});
});
非常感谢你的帮助!
我建议使用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"];
jQuery"serialize"方法使数据类似于get查询表单。
因此,在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"方法。