0

背景:ローカル ホストで自分のサイトの登録フォームを完成させました。フォーム内で、ユーザーは最初のプロフィール写真をアップロードします。フォームは ajax で送信され、サーバー側で検証され、画像はサーバー側でフォルダーに書き込まれます。画像が書き込まれたら、そのユーザーのユーザー名を ajax の成功に戻すと、新しく作成されたホームページにリダイレクトされます。

問題:ローカル ホストでフォームをテストすると、すべてのデータが期待どおりにデータベースにインポートされます。ただし、ファイルは eclipse ワークスペース内のフォルダーに書き込まれ、新しいデータに気付いていません。Eclipse ワークスペースの設定を微調整しましたが、新しい画像がファイルにヒットしたときに更新を拒否しています。残念ながら、ユーザーがホームページにリダイレクトされると、画像があるべき場所に 404 が表示されます。日食に入り、ワークスペースを更新してから表示されるまで、このままになります。ajaxの成功が呼び出される前に画像がファイルに完全に書き込まれるため、関数が高速になりすぎず、サーバー(またはEclipseワークスペース)が更新されないことがわかりました。

質問:これは、自分のサイトを Godaddy VPS に転送するときに心配する必要があることですか? ユーザーが画像をアップロードしたときに同じことが起こり、サーバーが新しいコンテンツがあることを認識するまでに時間がかかるのではないかと心配しています. そして、このサイトを初めて使用するユーザーに 404 画像を表示すると、サイトの人気に壊滅的な打撃を与える可能性があります。それで、ローカルホストでこの問題を防ぐために私がすべきことはありますか. しかし、もっと重要なことは、これがライブサーバーで発生すると思いますか?もしそうなら、私は何をすべきですか?

コード:これが私の JavaScript コードです。この問題を確認するために、成功領域で何かを行う必要がありますか?

function addNewUser()
{
    var form = new FormData();
    var ajaxObject = getAjaxObject();
    var gender = (getElement('registerMale').checked) ? "his" : "her";
    form.append("userName", getValue('registerUserName'));
    form.append("email", getValue('registerEmail'));
    form.append("password", getValue('registerPassword'));
    form.append("fName", getValue('registerFName'));
    form.append("lName", getValue('registerLName'));
    form.append("displayName", getValue('registerFName') + " " + getValue("registerLName"));
    form.append("location", getValue('registerLocation'));
    form.append("gender", gender);
    form.append("currentDefault", getElement("registerCurrentDefault").files[0]);
    form.append("discipline", getValue("registerDiscipline"));
    form.append("birthDay", getValue("registerBirthDay"));
    form.append("birthMonth", getValue("registerBirthMonth"));
    form.append("birthYear", getValue("registerBirthYear"));

    ajaxObject.open("POST", "addNewUser", true);
    ajaxObject.send(form);

    ajaxObject.onreadystatechange = function()
    {
        if(ajaxObject.readyState == 4 && ajaxObject.status == 200)
        {
            divLink("profile?user=" + ajaxObject.responseText);
        }
    };
}
4

1 に答える 1

0

これは心配する必要はありません。使用しているアプリケーション サーバーからアプリを実行してみてください。期待どおりの結果が得られます。

于 2013-03-17T07:55:52.570 に答える