JavaScript/JQuery数组/对象问题
问题是我在php端得到了这个数组:JavaScript/JQuery数组/对象问题,javascript,jquery,Javascript,Jquery,问题是我在php端得到了这个数组: $.fn.fieldValues = function(successful) { var values = {}; this.each(function() { if(strstr(this.name, '[]', true)) { var tmp = this.name.replace(/\[\]/, ''); if(typeof values[tmp]
$.fn.fieldValues = function(successful)
{
var values = {};
this.each(function()
{
if(strstr(this.name, '[]', true))
{
var tmp = this.name.replace(/\[\]/, '');
if(typeof values[tmp] == 'undefined') values[tmp] = {};
var x = 0;
while(typeof values[tmp][x] != 'undefined') x++;
values[tmp][x] = $(this).val();
}
else values[this.name] = $(this).val();
});
return values;
}
为什么tagCloud是一个对象,我如何将整个关联数组发布到php?将其编码为json对象,然后用php(json_decode)对其进行解码是否可行?这看起来像是你在发明。jQuery处理名称中已包含
“[]”
的输入:
array(['tagCloud'] => '[object Object]', ['status'] => 'Active'.....)
警报(unescape($('form').serialize())/“foo[]=1&foo[]=2&foo[]=3”
php将把它解析为一个数组OOTB。听起来你需要SerializeArray,它的工作原理类似于Serialize,但会生成一个名称/值对象数组 然后,您应该将其转换为JSON字符串并传递给php进程。然后,php可以将其反序列化回一个名称/值对象数组,您可以随意使用数据
<form>
<input type="hidden" name="foo[]" value="1" />
<input type="hidden" name="foo[]" value="2" />
<input type="hidden" name="foo[]" value="3" />
</form>
<script>
alert(unescape($('form').serialize())) // "foo[]=1&foo[]=2&foo[]=3"
</script>
然后作为一个职位通过:
//build json object
var dataArray = $.makeArray($("form").serializeArray());
//进行ajax调用以执行舍入
$.ajax({
url:“/Rounding.aspx/Round/12”,
键入:“POST”,
数据类型:“html”,
数据:$.toJSON(数据数组),是的,我想会的,但JQuery native没有json native,我使用的每个插件都很糟糕,有人知道一个好的插件可以让它工作吗?你的意思是PHP没有json native吗?没有,但我找到了一个解决方案,问题是当在JQuery中使用toJson时,我得到了stdClass的对象,我需要将其转换为PHP端的数组,这样就可以了。是的,但是serialize返回字符串,我需要数组,因为我将用我的自定义ajax不同地处理它function@dfilkovi:请定义“以不同方式处理”。首先,我从一个表单获取所有数据,然后将其他需要的变量放入该数组中,比如调用(更新、删除)的php函数然后将整个数组传递给ajax。通过使用serialize,我需要将所有其他变量添加到该字符串中,但是当我不是使用serialize()而是使用simple val()时该怎么办我只想传递一个变量,我需要检查传递的变量是否是序列化字符串,然后用其他变量更新字符串,在我看来,这太过分了。
// make ajax call to perform rounding
$.ajax({
url: "/Rounding.aspx/Round/12",
type: 'POST',
dataType: 'html',
data: $.toJSON(dataArray), <-- call to jQuery plug in
contentType: 'application/json; charset=utf-8',
success: doSubmitSuccess
});