jQuery ajax вызов: как передать объект без .serialize () или .param ()? - PullRequest
1 голос
/ 02 сентября 2011

У меня есть хэш javascript (объект?), Который мы назовем settings_hash, который в основном выглядит следующим образом:

{ setting_1=90, setting_2=30, setting_3=19 }

И у меня есть сообщение, которое выглядит так:

jQuery.getJSON("model/queries.cfc", {
    method: 'methodName',
    data: jQuery.param(settings_hash),
    }, function(data){
        // callback stuff goes here
    }
);

Мне действительно не нравится декодировать строку данных на моей странице запросов (это coldfusion-bleah).Есть ли простой способ справиться с декодированием немного лучше на стороне клиента?Так что то, что мы функционально получаем, таково:

jQuery.getJSON("model/queries.cfc", {
    method: 'methodName',
    setting1: 90,
    setting2: 30,
    setting2: 19,
    }, function(data){
        // callback stuff goes here
    }
);

Очевидно, что если .serialize () или .param () - это путь, то это нормально.Чего я хочу избежать, так это большой длинной строки, которую я должен декодировать, например data=setting_1%3D90%26setting2%3D30%26setting3%3D19.Открыто для всех решений / отзывов - если по какой-то причине действительно подходит длинная длинная строка, убедите меня, и вы получите кредит за ответ!

1 Ответ

1 голос
/ 02 сентября 2011

Ваш "хеш" не является допустимым литералом объекта JavaScript, который можно сериализовать в JSON.

Преобразуйте из того, что вам нужно, просто используя действительный литерал объекта JS, например:

var data = {
    method: 'methodName',
    setting1: 90,
    setting2: 30,
    setting2: 19
}

Затем просто перейдите к вашему вызову AJAX, никакой ручной сериализации не требуется:

jQuery.post(url, data, callback);

function callback(d) {
    //stuff
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...