JavaScript / JQuery массив / объект проблема - PullRequest
1 голос
/ 07 октября 2009
$.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;
}

Проблема в том, что я получил этот массив на стороне php:

array(['tagCloud'] => '[object Object]', ['status'] => 'Active'.....)

Почему tagCloud является объектом, как я могу опубликовать целый ассоциативный массив в php?

Ответы [ 3 ]

1 голос
/ 07 октября 2009

Звучит так, как будто вам нужно SerializeArray , который работает как Serialize , но создает массив объектов имя / значение.

Затем вы должны превратить это в строку JSON и перейти к процессу php. Затем php может десериализовать его обратно в массив объектов имя / значение, и вы можете использовать данные по своему усмотрению.

//build json object
var dataArray = $.makeArray($("form").serializeArray());

затем пройдите как пост:

// 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
});

Вот ссылка на библиотеку JSON, которую я использую для сериализации данных

1 голос
/ 07 октября 2009

Сработает ли кодирование как объект json с последующим декодированием в php (json_decode)?

0 голосов
/ 07 октября 2009

Это выглядит как будто вы заново изобретаете jQuery.fn.serialize. jQuery уже обрабатывает ввод с "[]" в имени:

<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>

php проанализирует это в массив OOTB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...