所以这个函数非常有效,我希望我还有六个按钮,并且不希望我的代码有大量的重复代码,那么有没有办法拉出beforeSend调用并使其成为外部回调函数?谢谢你提前
$('#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));
!更多问题!
我也将此作为我的ajax的一部分但如果我使所有按钮具有相同的回调,则错误消息将是相同且毫无意义的。我可以为每个按钮定制这个吗?谢谢!
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"
答案 0 :(得分:0)
你能不能将beforeSend变成一个函数吗?
var onBeforeSend = function(xhr) {
xhr.setRequestHeader('Authorization', 'Basic ' + btoa(username + ":" + password));
}
然后执行:
$.ajax
type: "GET"
url: start_url + mac_id + "/status"
dataType: "json"
crossDomain: true
cache: false,
beforeSend: onBeforeSend
这不是coffeescript,但这就是我用普通的javascript做的方式。
这样的事情会起作用吗?
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
答案 1 :(得分:0)
不确定
callback = (xhr) -> xhr.setRequestHeader('Authorization', 'Basic ' + btoa(username + ":" + password))
beforeSend: callback
确保变量属于范围的一部分。 CoffeeScript是功能范围。