2012-10-14 4 views
2

양식에 http://www.malsup.com/jquery/form/#ajaxForm을 사용합니다. Ajax가 서버에 이미지를 업로드하기위한 양식을 설정했습니다. IE9 없이는 모든 것이 잘 작동합니다. :). 다른 브라우저에서는 올바르게 작동하지만 서버에서 JSON 응답을 가져올 수 없습니다. success 함수 내에 alert()를 두려고했지만 성공 함수가 이벤트로드되지 않은 것으로 보입니다.IE9의 jQuery 양식 플러그인에서 JSON 응답이 없습니다.

내 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 응답 생성 : 나는 비슷한 문제 (응답의 HTML 태그를 제거하기 위해)에 대한 몇 가지 게시물을 발견

$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)); 

을하지만, 도와주지 않습니다. 무엇이 잘못 되었나요?

편집 : IE 디버그 모드에서 "form.submit();"줄이 액세스가 거부되었습니다. jQuery 양식 플러그인 라이브러리 내에서. localhost에서 javascript를 실행하는 것과 관련된 일종의 보안 거부로 보입니다.

+0

$ this-> request-> headers 라인을 주석 처리하고 확인하십시오. dataType : json을 전달하는 경우 PHP에서 json 헤더를 설정하지 않아도됩니다. – GBD

+0

양식 작업은 무엇입니까? – GBD

+0

이 줄은 도움이되지 않습니다. 내 작업은 양식 태그 내에서 직접 설정됩니다. – deem

답변

3

IE9에서 문자 집합을 인식하지 못하여 오류가 발생할 수 있습니다. 나는 비슷한 문제에 직면해야했다.

나는이 이는 JSON 또는 서버 응답 문제가 아닙니다

$.ajaxSetup({ scriptCharset: "utf-8" , contentType: "application/json; charset=utf-8"}); 
+0

변경되지 않습니다. /. – deem

0

도움이 될 것입니다. 내가 귀하의 업데이 트를 볼 수있는 것처럼, 문제는 내 것과 동일합니다, IE는 전혀 제출을 허용하지 않으므로 아무런 요청도 응답이 없습니다.

필자는 문제가 무엇인지 알아 내려고 노력하고 있습니다. 저자 페이지의 예는 작동하지 않습니다.

+0

아니요, IE에서 양식을 제출합니다. 내 이미지를 저장하기 때문입니다. :) 나는 $ this-> auto_render = false' (Kohana 프레임 워크)를 설정하여 내 문제를 해결했는데'internal' ($ this-> request-> is_internal()) 요청이 있고 이제는 올바르게 작동합니다 :). – deem

+0

미안하지만, 비슷한 문제가 있습니다. 왜냐하면 submit();에 "access denied"때문에 파일 업로드가 시작되지 않습니다. – WombaT