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

呼び出されたときに、localhost からアプリケーションを実行すると、データが正しく送信されたことを確認できますが、実稼働サーバーでアプリケーションを実行すると、(webkit インスペクターを使用して) 次のように渡されたデータが表示されます。

changed_users:[object Object]
num_of_changed_users:1

本番サーバーで「オブジェクトオブジェクト」を取得するのはなぜですか? jQuery ライブラリは、2 つの環境で同じです。

前もって感謝します!

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
4

1 に答える 1

0

json データをサーバーに送信する場合、サーバー スクリプトがこのデータを取得する方法と、データをデコードする方法を確認する必要があります。たとえば、php では、json を配列またはオブジェクトに変換するために json_decode を使用します。本番サーバーでは、このプロセスは (構成により) 自動である場合があります。また、サーバーにデータを送信するときは、テキストでencodeuricomponentを使用することを忘れないでください。あなたの場合、私はこれを行います:

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

(サーバー側の uri のデコードは自動的に行われる必要はありません)

于 2011-02-16T23:13:08.397 に答える