フォームに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 の実行に関連する、ある種のセキュリティ拒否のようです。