Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript/JQuery数组/对象问题_Javascript_Jquery - Fatal编程技术网

JavaScript/JQuery数组/对象问题

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]

问题是我在php端得到了这个数组:

$.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
});