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

时间:2010-10-24 22:32:01

标签: jquery

如果我想分离出我的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);
}

3 个答案:

答案 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范围之外的函数。