HTML:
<input name="id" value="id" id="id">
<input name="where[abc]" value="abc">
<input name="where[xyz]" value="xyz">
<input name="something_else" value="i do not want this be included on submit">
<input type="submit" id="go">
JS
$(document).on("click", "#go", function(){
var data = $('input[name^="where["').serialize();
$.post("url.php", {id:$('#id').val(), where: data}, function(data){ ... })
});
如何将动态where [key] = value传递给url.php,以便在url.php上传递:
print_r($_POST['where']) will show:
[abc => abc, xyz => xyz]
需要$ _POST [where]作为数组或者json也很高兴。
它目前显示为一个字符串,我需要使用parse_str($ _ POST [&#39;其中&#39;],$ where),这看起来不是最好的方式
答案 0 :(得分:0)
你实际上不必对你的JS做任何事情:只需按顺序序列化表单,让PHP脚本按预期处理指定的数组键。
对于你的JS,只需序列化表单。 $_POST['where']
对象中的PHP will automatically parse the query string to return an associative array。
$(document).on('click', '#go', function(){
var d = $('input[name^="where"]').serialize();
$.post('url.php', d, function(data){
// Data handling
})
});
上面的代码将提供以下查询字符串
where%5Babc%5D=abc&where%5Bxyz%5D=xyz
...这是有效的,并且将被PHP解析为使用键where
标识的关联数组。
很难说明PHP代码是如何工作的,但附加的是一个用于概念验证示例的PHPfiddle链接:http://phpfiddle.org/main/code/npm1-4q5i
$(document).on('click', '#go', function() {
var d = $('input[name^="where"]').serialize();
console.log(d);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input name="where[abc]" value="abc">
<input name="where[xyz]" value="xyz">
<input type="submit" id="go">
&#13;
答案 1 :(得分:0)
我认为使用JQuery没有直接的方法。
这里我迭代每个输入都有name^="where["
并处理以获取where[..]
和每个value
之间的字符串。
使用.where_values()
代替.serialize()
。
$(document).on("click", "#go", function() {
var data = $('input[name^="where["').where_values();
console.log(data);
$.post("url.php", {
id: $('#id').val(),
where: data
}, function(data) {})
});
jQuery.fn.where_values = function() {
var w = {};
$(this).each(function() {
var n = $(this).attr("name").split("[")[1].split("]")[0];
var v = $(this).val();
w[n] = v;
});
return w;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input name="id" value="id" id="id">
<input name="where[abc]" value="abc">
<input name="where[xyz]" value="xyz">
<input name="something_else" value="i do not want this be included on submit">
<input type="submit" id="go">