1

我有这个 JavaScript 代码:

$(document).ready(function(){ 
           $('#sel').change(function(){

        $.ajax({
                      type: "POST", 
                      url: "modules.php?name=TransProject_Management&file=index",
                      data: "&op=index_stat&stat="+$(this).val(),
                      cache: false,
                      success: function(data) {
                         //alert(data);
                         $("#ajax_results").html(data);
                     }
                  }); 

});
});

在状态更改时,我需要在不重新加载页面的情况下刷新 div。但它返回空白页。如果我尝试在成功时提醒结果,我会得到响应,我也检查了检查元素,没问题。问题是它返回空白页。

我正在处理的文件与我在 ajax 中调用的文件相同(modules.php?name=TransProject_Management&file=index)。

的HTML:

<body>
//...
<div id="ajax_results">
//.....
//somewhere here is the select option <select id="sel">......</select>
//.....
</div>
</body>

任何帮助,将不胜感激。

4

4 回答 4

1

使用以下代码返回您的响应 html:

echo json_encode(array($your_response));

然后在您的 javascript 中,您需要将数据引用为:

success: function(data) {
    $("#ajax_results").html(data[0]);
}

因为它现在是一个数组。

于 2013-01-15T20:27:03.907 回答
0

嗯,乍一看代码看起来不错。您是否尝试过使用 Chrome 调试工具?点击 F12 并检查 Network 选项卡,这将向您显示返回的内容。您也可以在不使用警报的情况下进行调试,这样您就可以逐步查看属性的确切含义。

只是想,您可能需要在返回的数据中添加“d”。无论如何,如果您按照我上面的建议进行操作,请在该行放置一个暂停符并运行代码,您将看到您需要什么。

于 2013-01-15T20:04:47.813 回答
0

this在您的 ajax 函数中是指jQuery XHR对象,而不是$('#sel')对象。只需将它分配给 ajax 函数之前的变量,var sel = $(this)然后稍后在函数中使用它。试试这个:

$('#sel').change(function(){
        var sel = $(this);
        $.ajax({
                      type: "POST", 
                      url: "modules.php?name=TransProject_Management&file=index",
                      data: "&op=index_stat&stat="+sel.val(),
                      cache: false,
                      success: function(data) {
                         //alert(data);
                         $("#ajax_results").html(data);
                     }
               }); 

        });
});
于 2013-01-15T20:08:37.860 回答
0

根据您在问题下方的评论,您似乎正在使用相同的脚本来显示您的页面并调用 javascript。这个脚本似乎返回了一个完整的 html 页面,从<html>标签开始。

一个页面只能有一个<html>标签,当您尝试将完整的 html 页面转储到另一个页面的元素中时,这将导致无效的 html 和不可预测的结果。

解决方案是让您的 ajax 脚本只返回需要插入的必要元素/html,仅此#ajax_results而已。

于 2013-01-15T20:30:18.677 回答