jQuery .load怎么会失败?

时间:2011-09-15 15:45:24

标签: php jquery jquery-load

我正在使用一个简单的ajax加载器来获取wordpress上的内容。

$("#page_preview").load("ajaxloader/", function(response, status, xhr) {
      if (status == "error") {
        alert("Sorry but there was an error");
      }
      else
      {
          $('#page_preview').fadeIn(300);
      }
    });
return;

当我加载嵌入了谷歌地图的特定帖子时,显然出现了错误而不是进入if语句,萤火虫表明它超出了此代码。 ifelse都未命中。

使用eclipse调试器我发现页面加载成功,但是当它将数据返回到.load()方法时,最后一次中断。

关于可能发生的事情的任何想法?

3 个答案:

答案 0 :(得分:4)

如何

<script>
    // as of jQuery 1.5.x ++
    var pagePreview = $("#page_preview");
    $.get("ajaxloader/").success(
        function(response, status, jqXhr) {
            alert("Success!");
            pagePreview.empty();
            pagePreview.append(response);
            // i feel you need to parse the response for the google map div, and perform another $.get() of the google url?
        }).error(function(response, status, jqXhr) {
        alert("These are not the droids you are looking for. move along.");
    }).complete(function(response, status, jqXhr) {
        alert("Complete!");
    });
</script>

#为什么

jQuery.load()会告诉您文档。 .load相当于这个

  

除了它之外,它大致相当于$ .get(url,数据,成功)   是一个方法而不是全局函数,它有一个隐含的   回调函数。当检测到成功的响应时(即,何时)   textStatus是“success”或“notmodified”),。load()设置HTML   匹配元素的内容到返回的数据。

您需要在$.ajax( complete:function(responseText, textStatus, XMLHttpRequest)){});注册并检查textStatus值。如果没问题,请自行将数据加载到目标$('selector')。或者通过在chrome(ctrl + shift + j)或firebug中的某个网络标签中观看您的网络xmlHttpRequests并使用.load()

中的'url'值调试问题来修复$('selector').load( 'url', function(response, status, xhr){})

答案 1 :(得分:0)

调试此方法的一种简单方法是使用firebug控制台选项卡查看XHR请求。请求URL可能存在问题,您可能无法获得任何数据,或者您可能会收到错误或其他内容。使用firebug,您可以轻松查看服务器返回的内容。

由于.load仅在成功时加载,您可以添加

console.debug("In .load function"); 

在功能的乞讨。再次,使用firebug进行检查,您可以找出.load回调是否实际被触发。

答案 2 :(得分:0)

使用$ .ajax函数 例如

    $.ajax({
      url: "test.html",
      context: document.body,
      success: function(){
        //when Successfully executed
      },
      error: function(){
        //When Error Fires
      }
    });