如果您不想在$ .ajax()的调用中定义jQuery $ .ajax()成功函数,请在何处定义?

Where to define a jQuery $.ajax() success function if you don't want to define in the call to $.ajax()?

如果我想分离出我的ajax success函数,以便它在我的中的其他位置定义,它是否必须在

1
2
$(document).ready(function()
{

部分还是可以与非jQuery javascript函数一起定义?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  $.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调用参数混合在一起会令人困惑。

例如,这会工作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$.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);
}

您必须更改它,因此它只是功能名称。 像这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
$.ajax(
{
    url: '/load_prayer',
    cache: false,
    dataType: 'json',
    type: 'POST',
    data: ({ 'prayerId' : prayerId }),
    success: handlePrayer,
    error: function(e, xhr)
    {
        console.log(e);
    }
});

你需要把函数放在你声明它的地方

1
2
3
4
5
function handlePrayer(data)
{
    $('#prayer_date').html(data.Date);
    console.log(data);
}


只要在调用$ .ajax之前加载了该函数,它就应该可以工作。 这意味着它可以在$(document).ready(...)之外。

有一个例外:所有需要访问的变量都需要在该成功函数之外。 下面的ajaxCallWorked()函数可以访问outside但不能访问inside

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var outside;

function ajaxCallWorked(data) {
    ...
}

$(document).ready(function() {
    var inside;
    $.ajax({
        ...
        success: ajaxCallWorked,
        ...
    });
}


我相信你可以定义ajax调用和onready范围之外的函数。