相关疑难解决方法(0)

如何从jQuery.ajax获取响应状态代码?

在下面的代码中,我要做的就是从jQuery.ajax调用中获取HTTP响应代码.然后,如果代码为301(永久移动),则显示"位置"响应标头:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>jQuery 301 Trial</title>
  <script src="http://code.jquery.com/jquery-1.5.1.min.js"></script>

  <script type="text/javascript">
  function get_resp_status(url) {
    $.ajax({
      url: url,
      complete: function (jqxhr, txt_status) {
        console.log ("Complete: [ " + txt_status + " ] " + jqxhr);
        // if (response code is 301) {
        console.log ("Location: " + jqxhr.getResponseHeader("Location"));
        // }
      }
    });
  }
  </script>
  <script type="text/javascript">
  $(document).ready(function(){
    $('a').mouseenter(
      function () {
        get_resp_status(this.href);
      },
      function () {
      }
    );
  }); …
Run Code Online (Sandbox Code Playgroud)

ajax jquery-1.5

216
推荐指数
6
解决办法
33万
查看次数

为什么在JavaScript中不推荐使用arguments.callee.caller属性?

为什么arguments.callee.caller在JavaScript中弃用了该属性?

它已添加,然后在JavaScript中弃用,但ECMAScript完全省略了它.某些浏览器(Mozilla,IE)一直支持它,并且在地图上没有任何计划来删除支持.其他人(Safari,Opera)已经采用了它的支持,但对旧浏览器的支持是不可靠的.

是否有充分理由将这些有价值的功能置于不确定状态?

(或者,有没有更好的方法来获取调用函数的句柄?)

javascript ecma262

212
推荐指数
3
解决办法
7万
查看次数

获取AJAX响应主体以用于错误回调

jQuery的AJAX错误函数具有以下参数:

error(XMLHttpRequest, textStatus, errorThrown)
Run Code Online (Sandbox Code Playgroud)

获得响应机构的最佳跨浏览方式是什么?

这是否有效(在所有浏览器中都可靠)?

$.ajax({
  error: function(http) {
    alert(http.responseText);
  }
});
Run Code Online (Sandbox Code Playgroud)

ajax jquery

45
推荐指数
3
解决办法
4万
查看次数

如何从IE中的Javascript访问XHR responseBody(二进制数据)?

我有一个使用XMLHttpRequest下载二进制资源的网页.

在Firefox和Gecko中,我可以使用responseText来获取字节,即使字节流包含二进制零.我可能需要强制使用mimetype overrideMimeType()来实现这一点.但是,在IE中,responseText不起作用,因为它似乎终止于第一个零.如果读取100,000个字节,而字节7是二进制零,则只能访问7个字节.IE的XMLHttpRequest公开了一个responseBody访问字节的属性.我已经看到一些帖子暗示直接从Javascript以任何有意义的方式访问这个属性是不可能的.这听起来很疯狂.

xhr.responseBody 从VBScript访问,因此明显的解决方法是在VBScript在网页中定义的方法,然后从JavaScript调用该方法.有关一个示例,请参阅jsdap. 编辑:不要使用这个VBScript !!

var IE_HACK = (/msie/i.test(navigator.userAgent) && 
               !/opera/i.test(navigator.userAgent));   

// no no no!  Don't do this! 
if (IE_HACK) document.write('<script type="text/vbscript">\n\
     Function BinaryToArray(Binary)\n\
         Dim i\n\
         ReDim byteArray(LenB(Binary))\n\
         For i = 1 To LenB(Binary)\n\
             byteArray(i-1) = AscB(MidB(Binary, i, 1))\n\
         Next\n\
         BinaryToArray = byteArray\n\
     End Function\n\
</script>'); 

var xml = (window.XMLHttpRequest) 
    ? new XMLHttpRequest()      // Mozilla/Safari/IE7+
    : (window.ActiveXObject) 
      ? new ActiveXObject("MSXML2.XMLHTTP")  // IE6
      : null;  // Commodore 64?


xml.open("GET", url, true); …
Run Code Online (Sandbox Code Playgroud)

javascript xmlhttprequest

25
推荐指数
2
解决办法
3万
查看次数

XMLHttpRequest - 使用后释放?

我正在编写一个完全由AJAX驱动的浏览器应用程序(我生命中的第一次),这意味着:

  • 它将是一个停留在浏览器中的页面,根据需要加载程序组件
  • 浏览器历史记录将是,没有.
  • 页面根本不会刷新

我担心的是我应该怎么做XMLHttpRequests,因为我主要是C++程序员,当你写一个像

x = new XMLHttpRequest();
Run Code Online (Sandbox Code Playgroud)

之后你需要delete它.

这个问题完全是关于内存管理的,无论这个对象是否new在内存中分配,即使它在readyState == 4完成它的"循环"之后,或者以某种方式释放,释放,whatchacallit?老实说,我不知道它可以在什么时候被释放,因为创建这些的脚本将在HEAD并且可能整个工作日坐在那里.我是否应该:

  • 创建一个或多个XMLHttpRequest类型的重用对象,对应用程序进行编程,使其不需要超过此限制,
  • 或者没关系,我可以分配尽可能多的新XMLHttpRequests吗?

考虑到我的网页的"框架"将保留,请在什么时候包括您的答案以及为什么要删除这些对象,如果他们愿意的话.希望我明白这个问题,并感谢任何有见地的答案.

编辑:

考虑onClick事件处理程序的代码(我删除了许多正在检查意外返回值的行)以创建XMLHttpRequest并发送它:

function submitme(){  
  var p = document.getElementById('p'); //a text field being sent to server
  if(typeof p!='undefined' && p!=null){
    if(p.value!=""){
      //here XMLHttpRequest is created, this function
      //returns exactly object of this type or false, when failed
      var xhr=createXmlHttpRequestObject();
      if(xhr!=false){
        xhr.open("POST", "blablabla.php", true);
        xhr.onreadystatechange=function(){
          if(xhr.readyState==4){
             if(xhr.status==200){
               //result will be posted in this div below
               var adiv = document.getElementById('resultdiv');
               //extract …
Run Code Online (Sandbox Code Playgroud)

javascript ajax xmlhttprequest

6
推荐指数
2
解决办法
6074
查看次数

标签 统计

ajax ×3

javascript ×3

xmlhttprequest ×2

ecma262 ×1

jquery ×1

jquery-1.5 ×1