2

フォームにhttp://www.malsup.com/jquery/form/#ajaxFormを使用しています。Ajax でサーバーに画像をアップロードするフォームを設定しました。IE9がなくてもすべて正常に動作します:)。他のブラウザーでは正しく動作しますが、サーバーから JSON 応答を取得できません。成功関数内に alert() を入れようとしましたが、成功関数がイベントをロードしていないようです。

私のJSコード:

$(function() {

    $('#upload-image').ajaxForm({
        dataType:  'json',
        success: processJson
    });

    function processJson(data) {
        var i = 0;
        $.each(data, function(key, val) {
            $('<li id="image_' + key + '"><input type="checkbox" name="delete_image[' + key + ']" /><img src="' + val + '" alt=""/></li>').hide().appendTo('#images').delay(i).fadeIn('slow');
            i += 1000;
        });
    }

});

PHP で JSON 応答を生成するコード:

    $output = array();

    foreach ($files['Filedata'] as $file)
    {
        $file_arr = $this->_save_image($file);

        $image = ORM::factory('image');

        $image->filename = $file_arr['filename'];
        $image->gallery_id = $gallery_id;
        $image->save();

        $output[$image->id] = Route::get('uploads')->uri(array('dir' => 'images/120x120', 'file' => $image->filename));

    }
    $this->request->headers('Content-type','application/json; charset='.Kohana::$charset);
    $this->response->body(json_encode($output));

同様の問題に関する投稿をいくつか見つけました (応答から html タグを削除するため) が、役に立ちません。なにが問題ですか?

EDIT:IEデバッグモードは、「form.submit();」の行でアクセスが拒否されたことを教えてくれました。jQuery フォーム プラグイン ライブラリ内。localhost での JavaScript の実行に関連する、ある種のセキュリティ拒否のようです。

4

2 に答える 2

3

これは、IE9 が文字セットを認識しないために発生するエラーである可能性があります。私は同様の問題に直面しなければなりませんでした。

私はこれが役立つはずです

$.ajaxSetup({ scriptCharset: "utf-8" , contentType: "application/json; charset=utf-8"});
于 2012-10-14T10:24:28.080 に答える
0

json やサーバーの応答に問題はありません。あなたの更新を見ることができるように、問題は私のものと同じです.IEは送信をまったく許可しないため、リクエストなし=応答なし.

私は問題が何であるかを理解しようとしています.著者ページの例は機能します-私のものではありません.

于 2012-10-15T12:43:27.093 に答える