Как мне создать ассоциированный массив в jquery и отправить его через ajax для анализа с php? - PullRequest
4 голосов
/ 17 августа 2010

Как мне создать ассоциативный массив (или некоторую сопоставимую альтернативу) в jQuery И отправить этот массив через ajax на страницу php, чтобы я мог использовать php для его обработки?

Как то так ...

// jQuery

if($something == true) {
    data[alt] = $(this).attr('alt');
    data[src] = $(this).attr('src');
else if ($something == "something else") {
    data[html] = $(this).html();
}

Затем отправьте этот массив с помощью функции .ajax ()

// jQuery

$.ajax({
    data: /* somehow send my array here */,
    type: 'POST',
    url: myUrl,
    complete: function(){
        // I'll do something cool here
    }
});

Наконец, проанализируйте эти данные с помощью php ...

// php

<img alt="<?PHP echo $_POST['alt']; ?>" src="<?PHP echo $_POST['src']; ?>" />

Я немного погуглил по этому вопросу и прочитал, что вы не можете создать ассоциативный массив с javascript, поэтому я просто ищу какую-то альтернативу. Заранее спасибо.

Ответы [ 3 ]

4 голосов
/ 17 августа 2010

Вы можете передать данные как объект в $.ajax(), например:

var data = {};
if ($something == true) {
    data.alt = $(this).attr('alt');
    data.src = $(this).attr('src');
}else if ($something == "something else") {
    data.html = $(this).html();
}

$.ajax({
    data: data,
    type: 'POST',
    url: myUrl,
    complete: function(){
        // I'll do something cool here
    }
});

Это будет сериализовано для поста, внутренне используя $.param(obj) для преобразования его в POST, например:

alt=thisAlt&src=thisSrc

или

html=myEncodedHtml
0 голосов
/ 17 августа 2010

Ассоциативный массив - это нечто вроде PHP. Но вы можете получить нечто подобное с помощью фигурных скобок ({}). Фактически, вы уже используете его в своем вызове $.ajax(). Обратите внимание на части {}. В этом случае вы можете использовать json_decode() на PHP-сервере для декодирования параметра 'data':

// jquery<br> $.ajax({<br> url: myUrl,<br> data: {<br> foo: 0,<br> bar: 1,<br> baz: 2<br> },<br> success: function() {<br> },<br> dataType: 'json'<br> });

Использование json_decode () даст вам что-то вроде:

// php array('foo' => 0, 'bar' => 1, 'baz' => 2);

0 голосов
/ 17 августа 2010

Не проще ли отправить json на сторону php, а затем использовать функцию json_decode в php, чтобы получить ассоциативный массив на стороне php?

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