2014-04-22 4 views
0

이 함수는 완벽하게 작동합니다. 여섯 개의 버튼이 더 있고 코드에 반복 코드가 필요하지 않기 때문에 beforeSend 호출을 꺼내 외부 콜백으로 만들 수있는 방법이 있습니다. 기능? 미리 감사드립니다.Jquery Ajax 콜백 외부 함수

$('#button_status').on 'click', -> 
username = $('#login_username').val() 
password = $('#login_password').val() 
mac_id = $('#login_mac').val() 

$.ajax 
    type: "GET" 
    url: start_url + mac_id + "/status" 
    dataType: "json" 
    crossDomain: true 
    cache: false 

    beforeSend: (xhr) -> 
    xhr.setRequestHeader('Authorization', 'Basic ' + btoa(username + ":" + password)); 

!

나는이 또한 내 아약스의 일부가 있지만 모든 단추에 동일한 콜백이 있으면 오류 메시지가 같고 무의미합니다. 이 버튼을 각 버튼에 맞게 사용자 정의 할 수 있습니까? 고맙습니다!

error: (xhr, ajaxOptions, thrownError) -> 
    console.dir arguments 
    console.log("*| Status ", xhr.status) 
    console.log("*| Error", thrownError) 
    console.log("*| Ajax", ajaxOptions) 
    if (not username? or not password?) 
     $('#data-text').empty() 
     $('#data-text').append ("""<h1>Please Log In</h1>""") 
     $('#input_username').fadeTo(100, 0.1).fadeTo(200, 1.0); 
     $('#input_password').fadeTo(100, 0.1).fadeTo(200, 1.0); 
     $('#header_user').css "background-color": "#d34242" 
     $('#header_password').css "background-color": "#d34242" 
     $('#data-text').css "background-color": "#d38642" 
    else 
     $('#data-text').empty() 
     $('#data-text').append ("""<h1>Failed Log In</h1>""") 
     $('#input_username').fadeTo(100, 0.1).fadeTo(200, 1.0); 
     $('#input_password').fadeTo(100, 0.1).fadeTo(200, 1.0); 
     $('#header_user').css "background-color": "#d34242" 
     $('#header_password').css "background-color": "#d34242" 
     $('#data-text').css "background-color": "#d38642" 
+1

또한이 코드는 CoffeeScript로 작성되었습니다. – TheAce

답변

0

물론

callback = (xhr) -> xhr.setRequestHeader('Authorization', 'Basic ' + btoa(username + ":" + password)) 
beforeSend: callback 

그냥 있는지 확인 변수는 범위의 일부입니다. CoffeScript는 기능 영역입니다.

+0

감사합니다! 이것으로 투표에 성공했지만 슬프게도 충분한 점수가 없습니다. 하지만 곧 받아 들일 것입니다. – TheAce

+0

대답으로 선택할 수 있습니다. 한가지 더, 세미콜론은 coffescript에 속하지 않습니다. 내 대답을 업데이트 할게. – beautifulcoder

+0

이 오류 기능을 사용하여 사용자 정의 가능한 콜백을 만들 수 있습니까? – TheAce

0

beforeSend를 함수로 변환 할 수 있습니까?

$.ajax 
    type: "GET" 
    url: start_url + mac_id + "/status" 
    dataType: "json" 
    crossDomain: true 
    cache: false, 
    beforeSend: onBeforeSend 

그것은 커피 스크립트 아니에요,하지만 그게 내가 일반 자바 스크립트와 함께 할 것입니다 방법 : 다음

var onBeforeSend = function(xhr) { 
    xhr.setRequestHeader('Authorization', 'Basic ' + btoa(username + ":" + password)); 
} 

는 않습니다.

이 작품이 마음에 드시나요?

onBeforeSend = (xhr) -> 
    xhr.setRequestHeader('Authorization', 'Basic ' + btoa(username + ":" + password)); 

$.ajax '/Foo/Bar/', 
    type: "GET" 
    url: start_url + mac_id + "/status" 
    dataType: "json" 
    crossDomain: true 
    cache: false, 
    beforeSend: (xhr) -> 
     onBeforeSend xhr 
+0

beforeSend : onBeforeSend 슬프게 coffeescript와 함께 작동하지 않습니다. – TheAce

+0

정의되지 않은 함수가 내 오류이지만 @beautifulcoder가 정확합니다. – TheAce