jQuery - сейчас: создание объекта и сохранение в нем значений для передачи в вызов AJAX - PullRequest
3 голосов
/ 17 мая 2010

У меня есть массив:

myarr = [];

Я заполняю его некоторыми значениями:

myarray['name'] = "Me!";

Теперь я хочу преобразовать этот массив в набор пар Key => Value. Я думаю, что jQuery сделает это автоматически, но это не так.

$.ajax
({
    type: "POST",
    dataType: "text",
    url: "myurl",
    data: myarr
});

Есть ли способ сделать это или я что-то не так делаю? Я не получаю ни ошибок JavaScript, ни ошибок на стороне сервера, кроме информации POST вообще.

Мне нужно, чтобы запрос был отправлен как истинный запрос POST . Мне нужно, чтобы код php был простым, потому что иногда логин не будет вызовом AJAX.

Я сейчас пытаюсь сделать следующее с ошибкой unexepected token ':'

myarr:
{
    'name':'me'
}

Теперь возникает вопрос: Как инициализировать новый объект javascript как «пустой», как настроить сопоставления и как передать его в вызове AJAX?

Ответы [ 3 ]

6 голосов
/ 17 мая 2010

Атрибут данных является объектом, поэтому он использует обозначения следующим образом:

data: { 'Name': 'Me!' }

Не

data: ['Name':'Me!']

Вам необходимо преобразовать ваш массив в объект. Вы можете легко сделать это вместо массива:

myData.Name = 'Me';
myData.OtherProp = 'Something';

Вот несколько примеров:

$.ajax({
    type: 'POST',
    dataType: 'text/html',
    url: 'myUrl.php',
    data:
    {
        'Name': 'Me!'
    },
    success: function(data, status)
    {
        // data is the returned response
    }
});

OR

var myObject = new Object();

myObject.Name = 'Me!';

$.ajax({
    type: 'POST',
    dataType: 'text/html',
    url: 'myUrl.php',
    data: myObject
});

Оба должны привести вас в нужное место.

2 голосов
/ 17 мая 2010

Вы не можете передать массив напрямую, вам нужно сначала его кодировать, а затем передать. Например, вы можете использовать json2.js из json.org , чтобы закодировать его как JSON:

var mydata = JSON.stringify(myarr);
$.ajax
({
 type: "POST",
 dataType: "text",
 url: "myurl",
 data: {"mydata" : mydata}
});

Тогда вам нужно будет использовать json_decode в PHP для преобразования строки JSON обратно в массив.

Обновление

Чтобы ответить на ваши новые вопросы:

Как инициализировать новый объект javascript как "пустой"?

Вы можете создать новый объект, например, так:

var myObj = {};

Как настроить сопоставления?

Есть несколько способов:

myObj.name = "Me!";
myObj['name'] = "Me!";

Как передать его в вызове AJAX?

Просто передайте его напрямую как аргумент data:

data: myObj
0 голосов
/ 17 мая 2010

Продолжайте точно так же, как вы, но измените [на {и] на} (что изменит ваш массив на объект)

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