【发布时间】:2011-01-19 13:08:30
【问题描述】:
在我的项目中,我有一列包含几个带有 jQuery Ajax 调用的过滤器,以减少 main.php <div id="target"> 中显示的产品数量。工作正常,但是在对结果进行排序或单击响应文件 main.php 中的分页后,我需要能够使用 main.php 的最后一个 Ajax 调用的 $_GET 参数在过滤器列中执行新的过滤器操作.这些参数在 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 而不是参数。
编辑
经过更多的阅读和测试,我几乎解决了这个问题,方法是更改我的原始 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 时遇到了小问题。我将对此进行详细说明,并可能发布一个新主题。
【问题讨论】:
-
我很难解密这里的问题?您显然遇到了某种问题,但您似乎无法很好地解释问题是什么或已经解决了 +CLOSE
-
我可以理解你错过了这个问题,因为在撰写本文时,我认为我在 Ajax 调用中做错了......最后我发现问题出在用于触发 ajax 的 PHP 代码中call ... 我认为解释我对 PHP 代码的调整是题外话,但正如您在重新格式化的函数 updateStatus 中看到的那样。我已经拆分了完整的 url(其中包含所有 $_GET 参数)。单独传递 base_url 和参数。希望这能澄清到目前为止的解决方案!谢谢!
标签: jquery xmlhttprequest