jQuery 在服务器上以不同于本地主机的方式对我的数据进行编码?

发布于 2024-10-17 18:29:40 字数 1635 浏览 7 评论 0原文

我有一个这样的函数:

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:[对象对象]
已更改用户数:1

为什么在生产服务器上我得到“对象对象”?两个环境中的 jQuery 库是相同的。

提前致谢!

编辑 这是本地主机上检查器的输出

<前><代码>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

I've a function like this:

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');
        }

When it gets called, if i run the application from localhost i can see my data sent correctly, while when i run the application on my production server i see (using the webkit inspector) the data passed as follows:

changed_users:[object Object]
num_of_changed_users:1

Why on production server i get "object Object"? The jQuery library is the same on the two environments.

Thanks in advance!

EDIT
Here is the output on the inspector on 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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

独木成林 2024-10-24 18:29:40

您正在向服务器发送 json 数据,您必须了解服务器脚本如何获取该数据以及如何对其进行解码。例如,在 php 上,我使用 json_decode 将 json 转换为数组或对象,可能在您的生产服务器中,此过程是自动的(通过配置)。还记得在将数据发送到服务器时在文本上使用encodeuricomponent,在你的情况下我会这样做:(

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

服务器端不需要自动完成uri的解码)

you are sending a json data to server, you must see how your server script get this data and how it decodes them. For example on php I use json_decode for converting json to arrays or objects, may in your production server this process is automatic (by configuration). Also remember to use encodeuricomponent on text when sending data to server, in your case I would do this:

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

(no need decode of uri on server side is done automatically)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文