我想将两个数组数据传递给php,然后用两个前缀提取它们,这样我就可以通过这两个前缀来选择它们。
示例代码
HTML
<form>
<!-- set one -->
<div class="one">
<input id="name" name="name">
</div>
<!-- /set one -->
<!-- set two -->
<div class="two">
<input id="email" name="email">
</div>
<!-- /set two -->
<!-- set one again -->
<div class="one">
<input id="msg" name="msg">
</div>
<!-- /set one -->
<button type="submit"></button>
</form>
Jquery的
我不知道如何传递set one并在数据中设置两个,它应该通过两个数组吗?我想按父类one
和two
选择它们。
$('form').on('submit', function(e) {
e.preventDefault();
$.ajax({
type: 'POST',
url: 'contact.php',
data: $('form').serialize(),
success: function(data) {
console.log(data);
},
error: function(data) {
console.log(data);
}
});
});
PHP
<?php
extract($_POST, EXTR_PREFIX_ALL, 'one'); // how to extract only set one?
extract($_POST, EXTR_PREFIX_ALL, 'two'); // how to extract only set two?
>
我想在php中使用它们:
if (empty($one_name) || empty($two_email) || empty($one_msg)) { // select them by prefix
// function
}
html不能包含php代码,如何使用jquery和php做到这一点?
感谢。
答案 0 :(得分:2)
在表单控件上使用数组名称
<div class="one">
<input id="name_1" name="one[name]">
</div>
<!-- /set one -->
<!-- set two -->
<div class="two">
<input id="email_2" name="two[email]">
</div>
<!-- set one again -->
<div class="one">
<input id="msg" name="one[msg]">
</div>
您的serialize()
方法无需更改
在php中接收
$data_one = $_POST['one'];
echo $data_one['name'];
答案 1 :(得分:1)
这比查理的答案简单得多,但你也可以这样做 - 如果你可以避免使用.serialize()
$('form').on('submit', function(e) {
e.preventDefault();
var one_name = $('.one #name').val();
var two_email = $('.two #email').val();
var one_msg = $('.one #msg').val();
$.ajax({
type: 'POST',
url: 'contact.php',
data: 'one_name=' +one_name+ '&two_email=' +two_email+ '&one_msg=' +one_msg,
success: function(data) {
console.log(data);
},
error: function(data) {
console.log(data);
}
});
});
<强> PHP:强>
<?php
$one_name = $_POST['one_name'];
$two_email = $_POST['two_email'];
$one_msg = $_POST['one_msg'];