2012-09-22 3 views
0

jQuery와 AJAX를 사용하여 양식을 제출할 때 IMG 태그가 포함 된 반환 된 HTML에서 403 오류가 발생합니다. 여기 IE7에서 403을 동적으로로드 할 때 오류가 발생했습니다.

내가 양식을 제출 사용하고 코드입니다 :

{"success":"true","personality_id":191,"personality_name":"Avril Lavigne","personality_image":"191avril.jpg","personality_html":"<div class=\"personality_wrapper\" data-personality-id=\"191\"><img src=\"images\/personalities\/personality_images\/192avril.jpg\" class=\"personality_image_small\" \/><div class=\"personality_info\"><div class=\"personality_name\" title=\"Kjh\">Kjh<\/div><div class=\"personality_options\"><a href=\"#\" class=\"personality_option personality_edit\">Edit<\/a><a href=\"#\" class=\"personality_option personality_delete\">Delete<\/a><\/div><\/div><\/div>"} 

는 그것은 personality_html입니다 : 여기

// Add a new personality to the quiz 
    $('form#personality_editor').submit(function(e) { 

     e.preventDefault(); 

      // Submit the form with jQuery Form plugin to handle attachments 
      $(this).ajaxSubmit({ 
       dataType: "json", 
       resetForm: true, 
       beforeSend: function() { 
        // Show the loading spinner 
        $('img#personality_loader').show(); 
       }, 
       success: function(add_personality_response) { 

        // Hide the image loader 
        $('img#personality_loader').hide('fast'); 

        if (add_personality_response["success"] == "true") { 

         // Create a new personality in the list of personalities 
         $('div#quiz_personalities').append(add_personality_response["personality_html"]); 

          // Add the personality to list of hidden personalities 
          AddRemovePersonality(add_personality_response["personality_id"], "add"); 

          // Set the focus on to personality name 
          $('input#new_personality_name').focus(); 

          // Show or hide the no personalities notice 
          ShowHideNoPersonalitiesNotice(); 

          alert("Success"); 
        } 

       }, 
       error: function() { 
        alert("There was an error adding personality"); 
       } 
      }); 

    }); 

을 나는 코드에서 다시 얻고있는 전체 JSON 응답입니다 jQuery의 .append() 함수를 사용하여 DOM에 추가하고있다.

이 문제는 Chrome에서 작동하기 때문에 Internet Explorer에서 발생합니다.

이미지가 내 서버의 위치 images/personalities/personality_images/192avril.jpg에 제대로 업로드됩니다.

내가 페이지에서 다시 얻고 있다는 응답은 : 그것은 이스케이프 된 데이터가 내 페이지에서 전달되는 함께 할 수있는 뭔가가

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<html><head> 
<title>403 Forbidden</title> 
</head><body> 
<h1>Forbidden</h1> 
<p>You don't have permission to access /&quot;images//personalities//personality_images//192avril.jpg/&quot; 
on this server.</p> 
</body></html> 

인가? 나는 그것에 echo 전에 json_encode()를 사용하고있다.

여기에 IE의 개발자 도구에서보기 : 당신이 가장 가능성이 두 번 자바 스크립트 객체 JSON을 구문 분석하려고

Developer tools IE

답변

1

.

.ajaxSubmit() 통화가 이미 응답 데이터 유형이 JSON이라고 지정했기 때문에 응답 Content-Type에 관계없이 여부, application/json 경우, jQuery를 자동으로 그것은 또한이 작업을 수행 할 것 (당신을 위해 자바 스크립트 객체로 응답을 구문 분석 지정한 dataType).

즉, 성공 콜백 내부에서 add_personality_response1은 이미 JavaScript 객체가됩니다. 나는 '

var add_personality_response = $.parseJSON(add_personality_response1); 

이 문제를 즉시 해결할 수이 줄을 제거하면 아주 잘 모르겠어요,하지만 당신은 시작해야하는 방법을 확실히이다 : 그러나 당신은 그것을 두 번째 $.parseJSON 위해 노력하고 있습니다.

+0

안녕하세요, Jon, 응답 해 주셔서 감사합니다. 이 여분의 코드 줄을 제거했으며 슬프게도 여전히 작동하지 않습니다. – Luke

+0

OK, 응답을 변경하여 HTML 만 반환하고 (json이 아님) 정상적으로 작동하도록 결정했습니다. 그러나, 이제 반환 된 반환 된'personality_id' 검색 할 수 없습니다. – Luke

관련 문제