对于主要的浏览器实现,您可以在XMLHttpRequest的send方法中使用的字符串数据的长度是否有文档记录?
当数据超过3k时,我遇到了一个JavaScript XMLHttpRequest Post在FireFox 3中失败的问题.我假设Post的行为与传统的Form Post相同.
W3C文档提到send方法的数据参数是DOMString,但我不确定主要的浏览器是如何实现的.
这是我的JavaScript的简化版本,如果bigText超过3k就失败了,否则它可以工作......
var xhReq = createXMLHttpRequest();
function createXMLHttpRequest() {
try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
try { return new XMLHttpRequest(); } catch(e) {}
alert("XMLHttpRequest not supported");
return null;
}
function mySubmit(id, bigText) {
var url = "SubmitPost.cfm";
var params = "id=" + id + "&bigtext=" + encodeURI(bigText);
xhReq.open("POST", url, true);
//Send the header information along with the request
xhReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhReq.setRequestHeader("Content-length", params.length); …Run Code Online (Sandbox Code Playgroud) Safari的XMLHttpRequest的send()方法支持File参数.Firefox(尚未).
如何检查是否支持此功能?在Firefox中,它的行为就像传递了一个空字符串一样.
我试图避免进行浏览器版本检测.
编辑:FF 3.6似乎支持它,但问题仍然适用于旧版本或其他浏览器.
每当我使用以下代码时,网络服务器(运行IIS 7)拒绝向我发送内容,而是发送"400 Bad Request".
request.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
Run Code Online (Sandbox Code Playgroud) 我必须从resourceindex页面获取响应文本作为JSON对象.当我在请求中没有放置Accept标头时,它会向我显示xml响应(我在警报中看到它).
但我希望响应作为JSON对象..我该怎么办.一个解决方案就是
httpRequest.setRequestHeader('Accept', 'application/JSON');
Run Code Online (Sandbox Code Playgroud)
但这给了我一个服务器错误:500
它也说
找不到Java类型,类....和MIME媒体类型application/octet-stream的消息正文编写器
有人可以建议如何克服这个问题并以JSON的形式获得响应?
我有一台服务器位于example.com运行apache,提供我的静态html文件.
我也有一个json服务位于api.example.com运行python与cherrypy.
用户请求example.com并获取索引html页面.在那个页面上,我使用jquery向json服务发出ajax请求.document.domain返回example.com
$.ajax({
type: 'GET',
url: 'http://api.example.com/resource/',
dataType: 'json',
success: successCallback,
error: errorHandler
});
Run Code Online (Sandbox Code Playgroud)
但是,我无法在firebug中看到ajax请求的响应主体.这让我相信浏览器(FF)不支持这一点.
实现这一目标的最佳方法是什么?如果可能的话,我宁愿不在example.com的apache后端使用任何代理.
我正在开发一个Chrome/Chromium扩展程序,它将从学校系统中读取成绩等级的学校成绩.问题是该网站不记得登录用户.因此,我不能使用AJAX.
只有当我在其他标签上登录该页面时.但我想在后台自动登录该页面.解决方案可能是iframe标签,但Chrome/Chromium不允许我使用iframe内容进行阅读和操作.是否有任何解决方案如何作为登录用户在页面中操作?谢谢
google-chrome xmlhttprequest cross-domain google-chrome-extension
我正在尝试将Google Chrome扩展程序的XHR请求发送到另一个域.这样可以正常工作,但我需要发送带有请求的域cookie.有什么办法吗?
当我的网站首次初始化时,它会查询服务器以获取一些数据.在此数据恢复之前,我无法在页面上放置任何内容.使用d3.js,我可以使用d3.json()来获取我的数据,但由于它是异步的,我需要将整个页面逻辑放在回调函数中.如何请求数据并等待它返回?
我们知道X-Requested-With,如果http请求来自Ajax,我们可以使用http请求标头来判断.
许多javascript框架会X-Requested-With在其ajax请求中自动添加标头,例如jQuery Ajax,Prototype Ajax.而作为HTTP标头字段列表的维基说,这X-Requested-With是一个非标准的请求标头.
谷歌多次后,我还没有找到谁首先提出X-Requested-With请求标题.
所以我想知道是否还有其他人知道它的X-Requested-With来源?谢谢...
我有一个React应用程序,使用Python和Flask构建的REST后端.我正在从数据库下载数据并通过浏览器将其保存为CSV文件. 我有这个工作. 然而,我不明白的原因是为什么我必须超越我一直在阅读的资源并将其混合以使其发挥作用.为什么我没有发现这个概述更好?
有人说我要做的就是用mimetype设置响应头,并且Content-Disposition: attachment; filename=something.csv:
然而,仅此一点,仅使用普通链接,而不是fetch()和身份验证,所以我不得不寻找将客户端数据保存到磁盘的方法,例如:
所以,我的问题是:
似乎第一个问题的答案是我不能修改请求头(添加身份验证令牌),除非通过XHR类型的工作.这似乎在这里得到了回答(没有回答,真的):
并且,由于某种原因,对XHR的反应Content-Disposition: attachment毫无意义.真的吗?在现代浏览器中管理这样的请求是否有更内在的方法?
我觉得我不明白这一点,这让我感到烦恼.
无论如何,这是我希望简化的工作代码,如果可能的话:
// https://stackoverflow.com/a/18197511/680464
download(filename, text) {
var pom = document.createElement('a');
pom.setAttribute('href', 'data:text/csv;charset=utf-8,' + encodeURIComponent(text));
pom.setAttribute('download', filename);
if (document.createEvent) {
var event = document.createEvent('MouseEvents');
event.initEvent('click', true, true);
pom.dispatchEvent(event);
}
else {
pom.click();
}
}
downloadReport(studyID) {
fetch(`/api/admin/studies/${studyID}/csv`
, {
headers: {
"Authorization": "Bearer " + this.props.authAPI.getToken()
, "Accept": "text/csv" …Run Code Online (Sandbox Code Playgroud) xmlhttprequest ×10
javascript ×6
ajax ×2
json ×2
cherrypy ×1
content-type ×1
cross-domain ×1
d3.js ×1
flask ×1
http-headers ×1
httprequest ×1
iis-7 ×1
reactjs ×1
synchronous ×1