【发布时间】:2012-03-28 04:15:39
【问题描述】:
提前为这个问题向大家道歉,因为我知道级联选择框已经完成,但我似乎找不到任何好的帮助。我尝试了各种方法,但似乎都失败了,我不明白为什么。
这是我目前拥有的 jquery:
function tester() {
$("select#type").attr('disabled', 'disabled');
$("select#cat").change(function(){
var vid = $("select#cat option:selected").attr('value');
var request = $.ajax({
url: "show_type.php",
type: "POST",
data: {id : vid}
});
request.done(function(msg) {
$("#result").html( msg );
});
request.fail(function(jqXHR, textStatus) {
alert( "Request failed: " + textStatus );
});
});
}
不要介意代码的第一部分带有 select#type 和 select#cat,因为这些是我最初试图让代码填充的内容,但是 .change 是我触发 @ 987654325@ 请求。其余的代码我只是想在成功的 ajax 请求后将一个简单的返回消息转储到一个空的 div#result 中。
我进行了测试,var vid 正确填充。
这是我尝试使用 ajax 调用的简单 PHP 文件:
<?php
$requ;
if (isset($_POST['id'])) {
$requ = 'Worked';
} else {
$requ = "didn't work";
}
echo $requ;
?>
我认为问题可能是 id 未正确传递,因此我更改了 PHP 脚本以提供任何有效输出,无论是否设置了 $_POST。
我不会发布 HTML,因为我只是想在测试时将其全部转储到 div 中。当我运行脚本时,我收到带有“错误”消息的“请求失败”错误消息。
这是我也尝试过的其他 jquery 和 PHP,使用 .post 而不是 .ajax:
function tester() {
$("select#type").attr('disabled', 'disabled');
$("select#cat").change(function(){
$("select#type").html("<option>wait...</option>");
var vid = $("select#cat option:selected").attr('value');
$.post("show_type.php", {id:vid}, function(data){
$("#result").empty().append(data);
}, "json");
});
}
以及伴随这个特定 jquery 的 PHP:
$requ = $_POST['id'];
$ret = 'You selected: ' . $requ;
echo json_encode($ret);
再一次,一切都失败了。我也尝试了上面的代码而不使用json 编码/参数。我想做的只是一个简单的(所以我想)级联选择保管箱。第二个框取决于第一个框的选择。我开始认为这一切可能不值得,只是严格遵守 PHP 的链接,使用GET 重新提交页面,并使用第一次单击的结果填充新的部分或 div。非常感谢您提供的任何帮助或建议,我已经花了 2 天的时间试图弄清楚这一切。提前致谢
【问题讨论】:
-
它给出了什么错误并解释了失败部分什么没有发生?
-
我得到的所有错误消息都是“错误”。无论出于何种原因,jQuery 都没有正确执行
.ajax或.post请求。文件结构完好,show_type 文件与 js.js 位于同一目录下。没有发生的是,根据我当前设置测试的方式,它不会使用我在 PHP 文件中的消息填充div和id=result,而是收到 ajax failed 消息。 -
我最初试图用依赖于第一个选择框的结果填充第二个选择框,但由于一直失败,在我无尽的调试过程中,我试图让结果尽可能简单可以尝试找出确切的问题,这就是我现在使用代码的地方:只是试图将 ajax/post 请求中的“数据”转储到一个空的 div 中
-
我无法使用萤火虫自动取款机。 Firefox 自行更新到 11.x,但 Firebug 的插件尚不兼容
-
好吧,我让 firebug 工作了……你需要从中知道什么?我收到 404 Not found 错误。我什至尝试在 ajax 调用的“url”中使用整个网址,但仍然得到 404