标签: xmlhttprequest

检查XHR2文件上载支持的最佳方法是什么?

如果文件上传功能支持XHR2,我的应用程序需要做不同的准备.检查这些功能是否受支持的安全方法是什么?例如,仅仅检查一下XMLHttpRequest(或MS等价物)upload属性是否足够?喜欢...

var xhr = new XMLHttpRequest();
if (typeof xhr.upload !== "undefined") {
  do nice stuff
}
else {
  do oldschool stuff
}
Run Code Online (Sandbox Code Playgroud)

或者这不安全吗?

javascript ajax file-upload xmlhttprequest browser-support

27
推荐指数
1
解决办法
3236
查看次数

xmlHttpRequest .open()方法中的参数"true"

从我在MDN中读到的参考文献中可以看出

如果为TRUE(默认值),则在服务器的响应尚未到达时,JavaScript函数的执行将继续.

这是AJAX中的A.

我一直在使用AJAX,但当我读到它时,我有点困惑.我认为问题可能是我不清楚地理解AJAX概念.我知道当然AJAX不会刷新页面,这意味着与服务器的连接和响应完全在后台完成.

但根据该引用我可以想象的是,如果我的JavaScript中有这样的代码:

//true, therefore process the function while server retrieves url
var xmlResponse;
var url = "http://example.com/file.xml";
xml_req.open("GET", url, true); 

xml_req.onreadystatechange = function() {
     if(xml_req.readyState == 4 && xml_req.status == 200) {
        if(xml_req.responseText != null)
             xmlResponse = xml_req.responseXML; //server response may not yet arrive
        else {
             alert("failed");
             return false;
        }
     };
xml_req.send(null);
Run Code Online (Sandbox Code Playgroud)

这是否意味着在服务器仍在检索数据的意义上,xmlResponse可能是未定义的?有人可以解释一下AJAX技术中的执行流程究竟是什么?提前致谢.

javascript ajax asynchronous xmlhttprequest

26
推荐指数
1
解决办法
6万
查看次数

在XMLHttpRequest中获取SENT标头

试图从XHR对象获取Request标头,但没有运气,该对象的隐藏方法或属性是否会暴露浏览器发送的标头?

我已经知道如何设置自定义请求标头并查看响应标头,我希望获得所有已发送的REQUEST标头的列表,浏览器创建的标头和我的自定义标头.

我正在使用webkit/chrome,不关心其他浏览器.

编辑:我不打算监视请求,我正在构建一个Web应用程序,我需要列出这些标题并在应用程序中显示它们,请不要告诉我有关小提琴,萤火虫和铬工具,这不是什么我在找.

javascript webkit google-chrome xmlhttprequest

26
推荐指数
1
解决办法
1万
查看次数

重用XMLHttpRequest对象还是创建一个新对象?

我搜索了stackoverflow但得到了相互矛盾的答案:

我为什么要重用XmlHttpRequest对象?

Ajax密集型页面:每次重用相同的XMLHttpRequest对象或创建新对象?

此外,w3schools.com上有一个推荐:

如果您的网站上有多个AJAX任务,则应创建一个用于创建XMLHttpRequest对象的标准函数,并为每个AJAX任务调用此函数.

为什么这个推荐?我在我的页面上使用全局XMLHttpRequest对象来处理所有Ajax任务.

javascript ajax xmlhttprequest

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

如何从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万
查看次数

Ajax - 500内部服务器错误

我正在努力为这个项目学习AJAX.我有一个网站,可以加载患者正在服用的药物.

我以递归方式调用这个AJAX函数,以便它附加一个包含单一药物和7天历史记录的新表.我在让代码在FF和IE中执行时遇到问题.铬合金完美无缺.我有警告显示xmlhttp.status,这就是我得到的:

xmlhttp.status == 500(内部服务器错误).

我评论了所有的递归,所以它缩小到这个代码的代码.(x跟踪药物的数量,所以我知道什么时候停止)

function LoadMeds()


  if ( x == MaxMedCount )
  {
      document.getElementById("the_day").value = parseInt(document.getElementById("the_day").value)+7; 
  }
  if ( x == (MaxMedCount - 1) )
  {
      document.getElementById("x").value = x + 1;
      show();
  }
  else
  { 

      if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
          xmlhttp=new XMLHttpRequest();
      }
      else
      {// code for IE6, IE5
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
      xmlhttp.onreadystatechange=function()
      {
          try 
          {      
              if (xmlhttp.readyState==4 && xmlhttp.status==200)
              {     
                  var div = document.createElement('div');
                  div.innerHTML= xmlhttp.responseText;
                  document.getElementById('MedTable').appendChild(div);
                  document.getElementById("the_med_").value = the_med_;

              }

          } …
Run Code Online (Sandbox Code Playgroud)

javascript ajax xmlhttprequest

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

xmlhttprequest用于本地文件

我有一个文件的路径,我想发送到服务器的休息Web服务.我正在使用xmlhttprequest对象.这篇文章如下:

var url = "http://localhost:8080/RestWSGS/jersey/gridsense";
 var boundary = "--------------" + (new Date).getTime();
  xmlHttp.open('POST', url, true);
  xmlHttp.onreadystatechange = function ()
  {
      if (this.readyState != 4)
        return;

      var result =this.responseText;
    document.write(result);
    };
  xmlHttp.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary);

var  part ="";
 part += 'Content-Disposition: form-data; ';
  part += 'name="' + document.getElementById("filename").name + '" ; ';
  //alert(document.getElementById("filename").value);
  part += 'filename="'+ document.getElementById("filename").value +  '";\r\n';

  part += "Content-Type: application/xml";
  part += "\r\n\r\n"; // marks end of the headers part
  part += 'filename="'+ document.getElementById("filename").value +  '";\r\n';
  part+= …
Run Code Online (Sandbox Code Playgroud)

xmlhttprequest

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

如何防止angular.js $ http对象发送X-Requested-With标头?

当使用$ http对象访问Web服务时,Angular.js会自动向请求添加X-Requested-With:XMLHttpRequest标头.

我使用CORS访问的Web服务不支持X-Requested-With标头,所以我试图消除它,但我不能访问$ httpProvider对象.我得到一个未定义的对象错误,如果我在控制器参数中引用它,那么angular注入它我得到一个"错误:未知的提供者:$ httpProviderProvider < - $ httpProvider"

所以我想知道如何访问$ httpProvider,就像它在文档(http://docs.angularjs.org/api/ng.$http)中所说的那样告诉angular.js不要发送那个头...

javascript web-services xmlhttprequest angularjs

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

可以使用xhrFields将onprogress功能添加到jQuery.ajax()吗?

正如这里建议的那样:https://gist.github.com/HenrikJoreteg/2502497,我正在尝试为我的jQuery.ajax()文件上传添加onprogress功能.上传工作正常,并且onprogress事件正在触发,但不是我预期的 - 不是在某个时间间隔重复触发,它只在上传完成时触发一次.有没有办法指定onprogress刷新的频率?或者,我是否正在尝试做一些无法做到的事情?这是我的代码:

$.ajax(
{
    async: true,
    contentType: file.type,
    data: file,
    dataType: 'xml',
    processData: false,
    success: function(xml)
    {
        // Do stuff with the returned xml
    },
    type: 'post',
    url: '/fileuploader/' + file.name,
    xhrFields:
    {
        onprogress: function(progress)
        {
            var percentage = Math.floor((progress.total / progress.totalSize) * 100);
            console.log('progress', percentage);
            if (percentage === 100)
            {
                console.log('DONE!');
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

ajax jquery xmlhttprequest progress

25
推荐指数
1
解决办法
4万
查看次数

使用FormData上传JavaScript Blob

我在将使用javascript创建的blob上传到我的服务器时遇到问题.基本思想是用户上传图像,并在javascript中我裁剪图像并在传输之前对其进行下采样.

图像处理工作正常,但上传本身无法正常工作.以下是执行从canvas到blob的上传和转换的代码

function uploadCanvasData()
{
    var canvas = $('#ImageDisplay').get(0);
    var dataUrl = canvas.toDataURL("image/jpeg");

    var blob = dataURItoBlob(dataUrl);

    var formData = new FormData();
    formData.append("file", formData);

    var request = new XMLHttpRequest();
    request.onload = completeRequest;

    request.open("POST", "IdentifyFood");
    request.send(formData);
}

function dataURItoBlob(dataURI)
{
    var byteString = atob(dataURI.split(',')[1]);

    var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]

    var ab = new ArrayBuffer(byteString.length);
    var ia = new Uint8Array(ab);
    for (var i = 0; i < byteString.length; i++)
    {
        ia[i] = byteString.charCodeAt(i);
    }

    var bb = new Blob([ab], { "type": mimeString }); …
Run Code Online (Sandbox Code Playgroud)

ajax html5 file-upload multipartform-data xmlhttprequest

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