在阅读了很多帖子和jQuery文档之后,我的第一个问题是... jQuery的新手......
在我的项目中,我有一个带有jQuery Ajax调用的多个过滤器的列,以减少main.php中显示的poduct数量。工作正常,但在例如排序结果或在响应文件main.php中单击分页后,我需要能够使用main.php的最后一次Ajax调用的$ _GET参数在filter-column中执行一个新的filter-action ...这些参数在Firebug选项卡Net-tab XHR - tab Parameters中显示正常。 ......
但是我找不到一种方法来检索参数并将它们放在我的函数中,它触发了Ajax调用:
function updateStatus(content_show, data) {
jQuery.ajax({
method: "get",
url: content_show,
data: data,
beforeSend: function(){
jQuery("#target").html('<p><img src="images/ajax_load.gif" /></p>');
}, //show loading just when link is clicked
success: function(html) {
// update status element
jQuery('#target').show("slow");
jQuery('#target').html(html);
}
});
}
在我的过滤器文件中,我有一个功能来检查和取消选中复选框并启动ajax调用:
function check_them(obj,URL) {
var getstr = "";
var man_id_selected ="";
for (i=0; i<obj.getElementsByTagName("input").length; i++) {
if (obj.getElementsByTagName("input")[i].type == "checkbox") {
if (obj.getElementsByTagName("input")[i].checked) {
getstr = "" + obj.getElementsByTagName("input")[i].name + "=";
man_id_selected += obj.getElementsByTagName("input")[i].value + "_";
} else {
<!-- getstr += obj.getElementsByTagName("input")[i].name + "=&";-->
}
}
}
getUrlStatus('main.php', function(status) { // try to find $_GET parameters of main.php
alert(status);
});
updateStatus(URL, getstr+man_id_selected);
}
在这里,我也尝试用以下方法找到XHR参数:
function getUrlStatus(url, callback) {
jQuery.ajax({
url: url,
complete: function(xhr) {
callback(xhr.status);
}
});
}
但后者当然只会返回状态200而不是Paramters ....
我非常感谢任何帮助和评论!
阿尔扬
修改
经过几天的阅读和测试后,我几乎通过更改原始PHP代码和函数来解决问题,以便通过回调正确格式化函数updateStatus:
function updateStatus(url, base_url, new_parameters, old_parameters) {
jQuery.ajax({
method: 'get',
url: base_url,
data: new_parameters,
beforeSend: function(){
jQuery("#target").html('<p><img src="images/ajax_load.gif" /></p>');
}, //show loading just when link is clicked
complete: function(){
jQuery("#target").hide("fast");
}, //stop showing loading when the process is complete
success: function(html) {
// update status element
jQuery('#target').show("slow");
jQuery('#target').html(html);
callback(this.url)
}
});
}
...现在我只有轻微的问题,在PHP中调用新的url到$ url。我将详细说明并可能发布一个新主题。
Tnx无论如何!
答案 0 :(得分:7)
为了将来参考,如果您使用的是jQuery 1.4+,则成功函数实际上接受3个参数,只是后两个是可选的,data
通常是唯一需要的。
成功(data,textStatus, XMLHttpRequest):函数
一个功能 如果请求成功,则调用。该 函数传递三个参数: 从服务器返回的数据, 根据'dataType'格式化 参数;一个字符串描述 状态;和XMLHttpRequest对象 (从jQuery 1.4开始提供)。这是 阿贾克斯事件。
所以下次如果你需要获得有关XHR响应的更多信息,你可以像这样设置你的成功函数:
success: function(data, status, xhr) {
// tests with status and xhr, etc...
}