如何通过AJAX发送PHP数组
How to send a PHP array via AJAX?
在我的注册页面上,人们可以通过填写一些输入和复选框来注册我的网站。它基本上是一种使用ajax将数据发送到PHP页面的表单,然后将数据放入数据库。
javascript从表单中获取值,例如
var w = _("website").value;
var bio = _("bio").value;
然后像这样发送ajax.send("w="+w+"&bio="+bio);
这正常工作,但我想添加一些内容。
现在,我有许多复选框,我想在一个数组中获得这些复选框,这些复选框通过ajax发布在一个变量中。因此,在我的表单中,我有一段PHP:
$licensessql = mysqli_query($db_conx, "SELECT * FROM licenses");
while($licenserecord = mysqli_fetch_assoc($licensessql)) {
echo '<input type="checkbox" value="'.$licenserecord["license"].'" name="licenses[]" id="'.$licenserecord["license"].'"><label for="'.$licenserecord["license"].'">'.$licenserecord["license"].'</label><br>';
}
使用纯PHP,这将起作用,并将复选框中的所有值放在数组licenses[]中,但我不知道如何使用ajax实现这一点。如果我有5个复选框,我希望javascript var具有值"value1,value2,value3",并将其发布到PHP。
谢谢!
首先,我建议使用其他答案中发布的表单序列化。
回答您的实际问题:"If I have 5 checkboxes, I want the javascript var to have for example the value 'value1,value2,value3' and have that posted to PHP."
这里有一个完整的工作示例(使用3个复选框),它将生成一个javascript变量,您可以使用该变量将其传递给AJAX post方法以供PHP处理。
JSFiddle:https://jsfiddle.net/o5q04vf0/
代码段:
$(document).ready(function() {
$('#btnTest').click(function() {
var checkBoxValues = $("[name=licenses''['']]").map(function() {
if ($(this).is(':checked')) {
return this.value;
}
}).get().join();
alert(checkBoxValues);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" value="0" name="licenses[]" />
<input type="checkbox" value="1" name="licenses[]" />
<input type="checkbox" value="2" name="licenses[]" />
<button id="btnTest">Submit</button>
这将有助于你朝着正确的方向前进,但一定要考虑像这里建议的其他成员一样,在通过AJAX传递数据时切换你的方法。
使用POST并将数组序列化为数据
$data = $('form').serialize();
$.post( "ajax/test.html", function($data) {
$( ".result" ).html( data );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="demo_form.asp">
<input type="checkbox" name="vehicle" value="Bike"> I have a bike<br>
<input type="checkbox" name="vehicle" value="Car" checked> I have a car<br>
<input type="submit" value="Submit">
</form>
在PHP中,您使用$_POST['attributeName']
来读取值
开始:
您需要Serialize函数!以下是如何使用它的示例:
HTML:
<form id="yourOrderFormId" method="post">
<input type="checkbox"/><input type="text"/>
<input type="checkbox"/><input type="text"/>
<button id="yourButtonId">Send</button>
</form>
jQuery Ajax:
<script>
$('#yourButtonId').click(function(e) {
var yourData = $("#yourOrderFormId").serialize();
$.ajax({
method: 'POST',
url: '/yourUrl',
data: yourData,
dataType: 'html',
success:success: function (result) {
alert("Your message sent!");
}
});
或者与serializeArray()一起使用;
console.log($('form').serializeArray());
此处:在此处输入链接描述
希望它能有所帮助;)
您可以使用serializeArray
函数发送所有表单数据Serialize
用于GET,serializeArray
用于POST。
$('#btn-send').click(function(e) {
$.ajax({
url: 'url-to-data-send',
method: 'post',
data: $(this).closest('form').serializeArray(); <--- send form data
}).done(function(response) {
alert('form sent');
})
});
或者你可以指定你想发送什么明确的
var data = $(this).closest('form').serializeArray();
console.log(data);
小提琴
**编辑**
这是你想要的我想
var arr = [];
$.map( $(this).closest('form').find('input[name="chck[]"]:checked'), function( n, i ) {
arr.push({ name: $(n).attr('name'), value: $(n).val()});
});
console.log(arr);
FIDDLE 2
- 调用php数组中的JS函数
- 将PHP变量分配给PHP数组
- php数组转换为javascript
- 如何用javascript打印php数组
- 将PHP数组传递给js变量
- javascript变量到php数组
- 如何将JSON编码的PHP数组发送到同一页面上的数据表
- 如何在PHP数组中加载下一个youtube
- 使用Angular.js访问php数组数据
- 将Javascript数组转换为PHP数组
- 使用mysql为JSON php数组分配多个列值
- 如何通过AJAX发送PHP数组
- 使用ajax将php数组传递给javascript
- 在Javascript代码中显示PHP数组变量
- 将php数组转换为javascript数组
- 将 PHP 数组传递给 HTML 页面
- 如何将php数组转换为javascript数组
- PHP 数组到 JavaScript 数组
- 将 JavaScript 数组转换为 PHP 数组
- 将PHP数组发送到Javascript