JQuery кодирует мои данные на сервере иначе, чем на localhost? - PullRequest
0 голосов
/ 17 февраля 2011

У меня есть такая функция:

function flush_changes() {
            jQuery('#save-changes').replaceWith('<span id="save-changes">Saving..</span>');
            var changes = new Array();
            for (var i=0; i<edited_users.length; i++) {
                changes.push({
                    id: edited_users[i],
                    first_profession: jQuery('#user_first_profession_' + edited_users[i]).val(),
                    second_profession: jQuery('#user_second_profession_' + edited_users[i]).val()
                });
            }
            jQuery.post("${tg.url('/users/admin_user_professions/save')}",
                        {
                            changed_users: changes,
                            num_of_changed_users: changes.length
                        },
                        function(data) {
                            if (data.result == 'OK') {
                                location.href = location.href;    
                            } else {
                                alert('Error while saving: ' + data.reason);
                            }
                        }, 'json');
        }

Когда он вызывается, если я запускаю приложение с локального хоста, я вижу, что мои данные отправлены правильно, когда я запускаю приложение на моем производственном сервере.я вижу (используя инспектор webkit) данные, передаваемые следующим образом:

changed_users:[object Object]
num_of_changed_users:1

Почему на производственном сервере я получаю "объектный объект"?Библиотека jQuery одинакова в двух средах.

Заранее спасибо!

EDIT Вот выходные данные инспектора на localhost

changed_users%5B0%5D%5Bid%5D:314
changed_users%5B0%5D%5Bfirst_profession%5D:5
changed_users%5B0%5D%5Bsecond_profession%5D:6 num_of_changed_users:1

1 Ответ

0 голосов
/ 17 февраля 2011

вы отправляете данные json на сервер, вы должны увидеть, как ваш серверный скрипт получает эти данные и как он их декодирует.Например, на php я использую json_decode для преобразования json в массивы или объекты, возможно, на вашем производственном сервере этот процесс автоматический (по конфигурации).Также не забудьте использовать encodeuricomponent для текста при отправке данных на сервер, в вашем случае я бы сделал следующее:

.......
first_profession: encodeURIcomponent(jQuery('#user_first_profession_'+edited_users[i]).val()),
.......

(нет необходимости декодировать URI на стороне сервера выполняется автоматически)

...