[英]Issue while posting Array and Form data together through jQuery Ajax
我一直在尝试将Array和Form数据一起发布,但似乎我遇到了JavaScript错误。 当我尝试发布仅数组数据而不添加表单数据时,它工作正常。
我有一个下拉选择框和几个复选框。 我想将SelectBox数据和CheckBox数据一起发布,所以我将CheckBox数据保存到数组中,因为它是多个Select CheckBox。
在下面的代码中,我需要解决此问题
data: datasel+"&id="+$("#member_id").val(), //Error in this line only. To be Fixed!!
这是完整的代码
<script>
$(document).ready(function(){
$("#err").css('display', 'none', 'important');
$("#submit_issueBook").click(function(){
//Creating Array and adding data
var datasel = { 'selector[]' : []};
$(":checked").each(function() {
datasel['selector[]'].push($(this).val());
});
$.ajax({
type: "POST",
url: "includes/issue_book.php",
//data: "submit_addMember="+$("#submit_addMember").val(), <-- Default format for sending post data
data: datasel+"&id="+$("#member_id").val(),
if($.trim(html)=='true'){
$("#err").addClass("alert alert-success err-inline");
$("#err").html("<strong>Member details updated Successfully</strong>");
window.location="<?php basename($_SERVER['PHP_SELF']); ?>";
}
else{
$("#err").addClass("alert alert-danger err-inline");
$("#err").html("<img src='images/caution-icon.png' />"+$.trim(html));
}
},
beforeSend:function()
{
$("#err").css('display', '-webkit-inline-box', 'important');
$("#err").addClass("err-inline");
$("#err").html("<img src='images/loading.gif' /> Loading...")
}
});
return false;
});
});
</script>
捕获此数据的PHP代码是
if( isset( $_POST['selector'] ) )
{ $id=$_POST['id'];
$data=$_POST['selector'];
for ( $i=0; $i < count( $data ); $i++ )
{
//Some SQL query
}
}
任何帮助,将不胜感激。 谢谢 :)
您正在将json与数据中的获取字符串混合。 当您拥有datasel对象时,只需向其添加id键和值。 首先删除那些方括号,仅需要以html形式作为名称:
var datasel = { 'selector' : []};
然后在循环中:
datasel['selector'].push($(this).val());
after循环将id键/值对添加到datasel对象:
datasel.id = $("#member_id").val();
然后在ajax中发送此json就足够了:
data: datasel,
首先,为什么将DOM操作代码放入ajax调用设置中? 试用以下代码:
$.ajax({
type: "POST",
url: "includes/issue_book.php",
//data: "submit_addMember="+$("#submit_addMember").val(), <-- Default format for sending post data
data: datasel+"&id="+$("#member_id").val(),
beforeSend:function()
{
$("#err").css('display', '-webkit-inline-box', 'important');
$("#err").addClass("err-inline");
$("#err").html("<img src='images/loading.gif' /> Loading...")
}
});
我在这里所做的是删除我之前提到的这段代码(因此您应该将其放在所需的位置),然后将beforeSend放入它所属的ajax设置内:
希望它会对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.