2012-12-10 2 views
2

내가 양식에서 모든 값을 얻기 위해이 스크립트를 사용하고 jQuery를 AJAX 호출을 통해 제출 개체 없음 NS_ERROR_XPC_BAD_OP_ON_WN_PROTO: Illegal operation on WrappedNative prototype object @ http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js:2FormData는 아약스 요청을 준비하기 위해,

+0

FormData에 대한 코드를 게시하는 마음? 거기에 정의되지 않은 것을 얻는다면, 상황이 잘못 될 가능성이 있습니다. –

답변

3

는 AJAX 호출에 다음을 추가해야

$.ajax({ 
     url: '/edit.php', 
     data: fd, 
     type: 'POST', 
     processData: false, //Add this 
     contentType: false, //Add this 
     dataType: 'html',    
     success: function(data){ 
      alert(data); 
     } 
    }); 
+1

그게 스크립트를 작동하게 만들었지 만, 왜 작동 하는지를 이해하려고 시도했는데 결론에 도달하지 못했습니다. b 기본값 (true)으로 남겨두면 processData와 contentType은 어떻게됩니까? 어쨌든, 고맙습니다! – ghego1

0

이 아마 이유가 아니라 단지 싶었 : 나는 fd['inputname'] 내가 정의되지 않은 얻을, 그래서 내가 잘못 어딘가에 일을해야 생각을 ... 경고 경우 jQuery를, 그리고

파이어 폭스 디버거이 나에게 말한다 지적해라. out : i가 여기에 있습니다. JS에서의 아이디어는 세계적인 저감을 지향합니다.

processData: false, 
contentType: false, 

그래서 다음과 같습니다 : 아마 var i=...

+0

나는 동의하며 다음과 같이 formdata 생성자를 사용할 수있다. new FormData (yourform); – nDijax

0

이 페이지 도움 당신은 ... :)를

<!DOCTYPE html> 
<html> 
<head> 
    <script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"> 
    </script> 
</head> 
<body> 
    <form method="post" id="fileinfo" enctype="multipart/form-data"> 
    file <input type="file" name="slug"><br> 
    <input type="button" id="uploadBTN" value="Stash the file!"></input> 
    </form> 
    <script type="text/javascript"> 
    $(document).ready(function() 
    { 
     $('#uploadBTN').on('click', function() 
     { 
      var form = $('form').get(0); 
      console.log(form); 
      var fd = new FormData(form); 
      fd.append('user_id',4); 
      fd.append('user_media_category_id',1); 
      //console.log(fd); 
      fd.append("user_", "This is some extra data"); 
      $.ajax({ 
       url: 'http://localhost/yii2/azstudio/project/api/web/v1/user-media/new', 
       type: 'POST', 
       data: fd, 
       success:function(data){ 
        console.log(data); 
       }, 
       error:function(data){ 
       console.log(data); 
       }, 
       cache: false, 
       contentType: false, 
       processData: false 
      }); 
     }); 
    }); 
    </script> 
</body> 
</html> 
관련 문제