форма сериализации проблема - PullRequest
0 голосов
/ 28 мая 2010

У меня есть форма. Я пытаюсь проверить это с помощью запросов AJAX GET.

Итак, я пытаюсь отправить значения полей в данных запроса GET.

$('#uxMyForm').serialize();

проблема в том, что он возвращает что-то непонятное. Я использовал сериализацию раньше. Это совершенно странно.

возвращаемое значение сериализации

 actionsign_upcontrollersitedataauthenticity_token=oRKIDOlPRqfnRehedcRRD7WXt6%2FQ0zLeQqwIahJZJfE%3D&customer%5BuxName%5D=&customer%5BuxEmail%5D=&customer%5BuxResidentialPhone%5D=&customer%5BuxMobilePhone%5D=&customer%5BuxDateOfBirth%5D=&customer%5BuxAddress%5D=&customer%5BuxResidentialStatus%5D=

Я понятия не имею, как это использовать.

Спасибо

Обновление:

Мой вопрос: как мне обработать такой запрос? как это?

puts params[:data][:customer][:uxName]

мой триггер GET-запроса выглядит так

$.get('/site/sign_up',{data : $('#uxMyForm').serialize() }, function(data){
 alert(data);
});

Вышеуказанные строки jquery генерируют запрос .. для метода действия я делаю следующее

render :text => params

когда я наблюдаю, что отправлено в GET, в firebug PARAMS

**data** authenticity_token=oRKIDOlPRqfnRehedcRRD7WXt6%2FQ0zLeQqwIahJZJfE%3D&direct_customer%5BuxName%5D=&direct_customer%5BuxEmail%5D=&direct_customer%5BuxResidentialPhone%5D=&direct_customer%5BuxMobilePhone%5D=&direct_customer%5BuxDateOfBirth%5D=&direct_customer%5BuxAddress%5D=&direct_customer%5BuxResidentialStatus%5D=

возвращаемое значение, которое я печатаю в предупреждении, имеет

actionsign_upcontrollersitedataauthenticity_token=oRKIDOlPRqfnRehedcRRD7WXt6%2FQ0zLeQqwIahJZJfE%3D&direct_customer%5BuxName%5D=&direct_customer%5BuxEmail%5D=&direct_customer%5BuxResidentialPhone%5D=&direct_customer%5BuxMobilePhone%5D=&direct_customer%5BuxDateOfBirth%5D=&direct_customer%5BuxAddress%5D=&direct_customer%5BuxResidentialStatus%5D=

1 Ответ

0 голосов
/ 28 мая 2010

Как выглядит сама форма. У меня нет опыта работы с Ruby на рельсах - и если он создает форму новым захватывающим способом - но похоже, что есть только два элемента формы: authenticity_token и customer - где customer - это массив элементов. Это данные, которые вы опубликовали, но я их кодировал и вставил несколько разрывов строк:

authenticity_token=oRKIDOlPRqfnRehedcRRD7WXt6/Q0zLeQqwIahJZJfE=
&customer[uxName]=
&customer[uxEmail]=
&customer[uxResidentialPhone]=
&customer[uxMobilePhone]=
&customer[uxDateOfBirth]=
&customer[uxAddress]=
&customer[uxResidentialStatus]=

Что вы можете сделать, это сериализовать форму в массив и очистить ее перед отправкой с использованием jQuery ajax-запроса. Однажды я сделал нечто подобное, когда мне пришлось сериализовать элементы формы .net runat-server:

var serializedData = $(form).serializeArray();
for( i=0; i < serializedData.length; i++)
{
    // For each item in the array I get the input-field name after the last $ character
    var name = serializedData[i].name;
    var value = serializedData[i].value;
    if( name.indexOf('$') != -1)
        name = name.substr( name.lastIndexOf('$')+1 );
    serializedData[i].name = name;
}
var ajaxPostData = $.param(serializedData);

Итак, вместо блобла $ ABCPlaceHolder $ tbxEmail я получил tbxEmail в массиве. Вы можете сделать то же самое, чтобы получить uxName, uxEmail и т. Д. Вместо массива customer.

Однако еще раз обратите внимание, что из-за моей неопытности с ruby ​​это может быть не лучшим решением - может быть, есть параметр, который вы можете изменить, чтобы создать форму HTML по-другому?

Изменено:

Я не уверен, как работает ruby, но после поиска в Google я обнаружил, что вы сможете получить свои значения, используя params: customer как массив.

params: клиент должен содержать массив значений

{:uxName => "", :uxEmail => "" }

Я надеюсь, что это что-то говорит о том, как получить данные. Может быть (предупреждение - дикая догадка!) Так?

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