아니 왜 되던게 안되는거야?

ajax 처리를 할때 beforeSend에다가 코드를 작성해주면, request를 보내기 전에 작동한다. 난 요청을 보낼때 로딩을 달거나, 화면을 까맣게 만들어 request를 여러번 날리는 걸 막는데에 활용해오곤 했다.(가장 의도와 맞는 사용법은 언제나 jquery)
잘쓰고 있었는데 어느날 얘가 또 안되기 시작했다. 아래와 같이 코드를 돌렸다. 
/*소스 코드는 http://api.jquery.com/jquery.ajax/ 에서 퍼왔다. 안돌아가는 예임 */
$.ajax({
  url: "https://fiddle.jshell.net/favicon.png",
  beforesend: function( xhr ) {
    xhr.overrideMimeType( "text/plain; charset=x-user-defined" );
  }
}).done(function( data ) {
    if ( console && console.log ) {
      console.log( "Sample of data:", data.slice( 0, 100 ) );
    }
  });

이렇게하면 beforesend가 안먹는다. 


왜냐하면 beforesend가 아니라 beforeSend니까!!!!!!! 

아래처럼 하면 돌아간다. 

/*소스 코드는 http://api.jquery.com/jquery.ajax/ 에서 퍼왔다.  */
$.ajax({
  url: "https://fiddle.jshell.net/favicon.png",
  beforeSend: function( xhr ) {
    xhr.overrideMimeType( "text/plain; charset=x-user-defined" );
  }
}).done(function( data ) {
    if ( console && console.log ) {
      console.log( "Sample of data:", data.slice( 0, 100 ) );
    }
  });

그리고 beforeSend안에 있는 함수가 return false를 내뱉으면 request가 취소되는 것을 명심해야한다. 아! 또 async:false 달아둬서도 안된다. 


오늘도 너무 보람차고 수치스러운 하루였다 :-> 

+ Recent posts