如果我想分离出我的ajax success
函数,以便在<script>
的其他地方定义它,那么它是否必须在
$(document).ready(function()
{
部分还是可以与非jQuery javascript函数一起定义?
$.ajax(
{
url: '/load_prayer',
cache: false,
dataType: 'json',
type: 'POST',
data: ({ 'prayerId' : prayerId }),
success: function(data)
{
$('#prayer_date').html(data.Date);
console.log(data);
},
error: function(e, xhr)
{
console.log(e);
}
});
我不想在ajax
调用中定义它的原因是它最终将是一个大函数,如果它与其他ajax
调用混合在一起会很难读参数。
例如,这会起作用吗?
$.ajax(
{
url: '/load_prayer',
cache: false,
dataType: 'json',
type: 'POST',
data: ({ 'prayerId' : prayerId }),
success: handlePrayer(data),
error: function(e, xhr)
{
console.log(e);
}
});
handlePrayer(data)
{
$('#prayer_date').html(data.Date);
console.log(data);
}
答案 0 :(得分:10)
您必须更改它,因此它只是功能名称。像这样:
$.ajax(
{
url: '/load_prayer',
cache: false,
dataType: 'json',
type: 'POST',
data: ({ 'prayerId' : prayerId }),
success: handlePrayer,
error: function(e, xhr)
{
console.log(e);
}
});
你需要把函数放在你声明它的地方
function handlePrayer(data)
{
$('#prayer_date').html(data.Date);
console.log(data);
}
答案 1 :(得分:4)
只要在调用$ .ajax之前加载了该函数,它就应该有效。这意味着可以在$(document).ready(...)
之外。
有一个例外:所有需要访问的变量都需要在该成功函数之外。以下ajaxCallWorked()
功能可以访问outside
但不能访问inside
。
var outside;
function ajaxCallWorked(data) {
...
}
$(document).ready(function() {
var inside;
$.ajax({
...
success: ajaxCallWorked,
...
});
}
答案 2 :(得分:0)
我相信你可以定义ajax调用和onready范围之外的函数。