Javascript AjaxDiv使用正确的数据重新加载,但使用div中的整个网页

Javascript AjaxDiv使用正确的数据重新加载,但使用div中的整个网页,javascript,jquery,Javascript,Jquery,我有一个div,其中包含一个学生的时间表,还有一个下拉框,可以按学期进行选择 一旦他们选择了这个学期,就会有一个ajax帖子,但当它刷新时,就会显示该div中的整个网站,以及该学期的适当时间表 它看起来像网页中的iframe,如下所示: 下面是ajax post脚本 <script type="text/javascript"> $(document).ready(function() { $('#term').change(function() { var fo

我有一个div,其中包含一个学生的时间表,还有一个下拉框,可以按学期进行选择

一旦他们选择了这个学期,就会有一个ajax帖子,但当它刷新时,就会显示该div中的整个网站,以及该学期的适当时间表

它看起来像网页中的iframe,如下所示:

下面是ajax post脚本

<script type="text/javascript">
  $(document).ready(function() {

  $('#term').change(function() {

    var form_data = {
      term : $('#term').val(),
      ajax : '1'
    };

    var u = $("#schedulePortletURL").attr("href");

    $.ajax({
      url: u,
      type: 'POST',
      data: form_data,
      success: function(msg) {
        //alert(u);
        $('#view-schedule').html(msg);
      }
    });

    return false;
  });

  });
</script>

如果可能的话,你能给我一些建议来调查什么来纠正这个问题吗?谢谢

我猜对服务器的调用将返回一个完整的HTML页面,然后您的代码将完整的HTML页面放入view schedule div

要解决此问题,请创建一个新的HTML页面,您可以调用该页面,该页面包含一个HTML片段—您希望位于view schedule div中的区块。然后更改schedulePortletURL以指向新的HTML页面

或者,您可以从msg中获取html并对其进行解析,以提取您感兴趣的数据,然后将过滤后的数据插入到view schedule div中


现有的网站是否有可以调用的API

另一种可能性是,服务器端脚本中的某种错误检查器错误启动,导致重定向到某个网页。该网页然后由AJAX检索,然后显示在DIV中。我以前也有过这种情况。您应该检查服务器端脚本。

如果您无法完全控制正在获取的网页,则应将获取的网页视为不完整,并应使用iframe。请记住,使用.htmlblob,您还将获得javascript代码、flash对象等,可用于压缩用户

另一方面,如果您完全控制获取的网页,我认为您应该在模板中使用If语句检查请求是否基于ajax:

伪服务器端模板代码:

if not request.is_ajax():
    import header.html
import body.html
if not request.is_ajax():
    import footer.html

至于api,没有。它通过-I调用attr.href为这个CodeIgniter应用程序提供服务,因此javascript会正确地重写ajax需要发布到的URL。我是uPortal的新手,我需要获得更多访问权限才能深入到主页的其他部分。要更好地了解情况,可以使用firebug或Chrome developer tools等工具。然后,您可以确切地看到向服务器发送了什么POST,以及从服务器返回了什么。如果发生了某种重定向,正如David建议的那样,这将揭示它。Brad,我查看了WebProxy文档,我建议查看它们提供的两个选项:剪辑配置和后期拦截器类。这两种方法都在中进行了描述。要查看需要为PostInterceptor实现的接口,请参阅;要查看如何加载拦截器类,请参阅