如何将参数传递给ajax成功函数

时间:2013-07-16 09:13:25

标签: php xml ajax

我有一个php函数可以获取一些要处理的xml信息,但我的问题是除了从ajax返回的数据外还将参数传递给函数:

$.ajax({
    type: "POST",
    url: 'proxy.php',
    data:{country:'home'},
    dataType: "xml",
    success: function(data)
    {
       alert(data);
    },
    error : function(XMLHttpRequest, textStatus, errorThrown) {
        alert(XMLHttpRequest);
        alert(textStatus);
        alert(errorThrown);
        alert(XMLHttpRequest.responseText);
    }
});

我想传递带数据的参数。 我知道我可以像下面这样做:

$.ajax({
    type: "POST",
    url: 'proxy.php',
    data:{country:'home'},
    dataType: "xml",
    success: function do_it(parameter)
});
function do_it(parameter)
{
   return function(data)
  {
    alert(parameter);
    alert(data);
  }
}

我不想使用这种方式我想在第一个代码显示时传递参数。 有可能吗?

2 个答案:

答案 0 :(得分:1)

您可以使用context选项$.ajax。然后,这将在回调中以this的形式提供。

$.ajax({
    type: "POST",
    url: 'proxy.php',
    data:{country:'home'},
    dataType: "xml",
    context: parameter,
    success: function(data)
    {
       alert(data);
       alert(this);
    },
    error : function(XMLHttpRequest, textStatus, errorThrown) {
        alert(XMLHttpRequest);
        alert(textStatus);
        alert(errorThrown);
        alert(XMLHttpRequest.responseText);
    }
});

答案 1 :(得分:0)

如果您的参数不受AJAX调用的影响,只需在与调用相同的范围内定义它,然后从success函数访问它。例如:

var parameter = 'some value';
$.ajax({
    type: 'post',
    url: 'proxy.php',
    data: {country: 'home'},
    dataType: 'xml',
    success: function (data) {
        alert(parameter);
        alert(data);
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        alert(XMLHttpRequest);
        alert(textStatus);
        alert(errorThrown);
        alert(XMLHttpRequest.responseText);
    }
});

这是有效的,因为parameter位于外部范围内,因此可以通过成功函数访问。