这个:
function myFunction()
{
document.write("sup");
}
Run Code Online (Sandbox Code Playgroud)
在html中调用如:
<div id="myDiv">
<script>myFunction();</script>
</div>t
Run Code Online (Sandbox Code Playgroud)
sup在myDivdiv元素中添加一个字符串.这正是我想要的.但是,这个:
function loadFile(uri)
{
var r = new XMLHttpRequest();
document.write("trying to open: " + uri);
r.open('GET', uri, true);
r.send(null);
r.onreadystatechange = function()
{
if (r.readyState == 4)
{
myFunction();
}
}
}
function myFunction()
{
document.write("sup");
}
Run Code Online (Sandbox Code Playgroud)
像这样叫:
<div id="myDiv">
<script>loadFile("filename.txt");</script>
</div>
Run Code Online (Sandbox Code Playgroud)
似乎覆盖了我的整个html文件.即当我在Firefox中运行它时它只显示字符串sup(这是页面的整个内容)但页面似乎仍在加载(FF的加载图标仍然存在动画,显然是无限的).
首先,这将仅在本地,离线使用,作为一种快速和方便的方式呈现数据(使用html + js和web浏览器而不是plaing文本文件).我想要的是加载本地文本文件,然后将其一些内容作为html页面的一部分.与我的第一个示例相同,但首先加载文本文件.
我正在尝试编写一个简单的Express应用程序,它在Post请求中接收JSON.这是我到目前为止在服务器上的内容:
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json());
app.post('/acceptContacts', function(req, res) {
'use strict';
console.log(req.body);
console.log(req.body.hello);
res.send(200);
});
app.listen(8080);
Run Code Online (Sandbox Code Playgroud)
这是我在浏览器中的客户端上的内容:
var req = new XMLHttpRequest();
req.open('POST', 'http://localhost:8080/acceptContacts?Content-Type=application/json');
var obj = {hello:'world'};
req.send(JSON.stringify(obj))
Run Code Online (Sandbox Code Playgroud)
但是,我在服务器的控制台上收到以下输出:
{}
undefined
Run Code Online (Sandbox Code Playgroud)
谁能提出原因?
我现在遇到了一个奇怪的问题,即我正在开发的Chrome扩展程序发送http请求(普通的JavaScript).这是一个带有XmlHttpRequest(from )的POST请求,其中包含以下URL:background.js
http://host.com/postform/upload
Run Code Online (Sandbox Code Playgroud)
我也从普通网页(不是chrome扩展名)发送此请求,重要的是,如果我打开开发人员工具并检查我的请求的网络选项卡(选择原始标题显示),我会看到第一个标题:
POST /postform/upload HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
它在我启用代理而不是直接连接之前工作正常.我在我的Ubuntu上使用squid3.使用代理时请求之间只有一个不同之处 - 它使HTTP服务器返回404找不到 - 仅在使用代理时...
当我强制Chrome使用基于squid3的代理时(我在我的Chrome扩展程序中使用PAC脚本),我的请求将无效.我检查了很多次,尽我所能减少请求体的任何差异,而我现在剩下的就是第一个头.
在使用代理激活的请求发送时(从开发人员工具的网络选项卡,从后台页面打开),它看起来像这样:
POST http://host.com/postform/upload HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
我尝试过使用chome.webRequest.onBeforeSendHeaders API,但这没有帮助.我还尝试从XmlHttpRequest.open中的 URL中删除主机名,但这没有帮助.
是的,我在任何情况下都会发送正确的Host和Origin标头.这可能是我的squid3配置中的问题,或者我应该在我的javaScript中更改什么?
UPDATE 现在意识到squid不是问题,问题是POST请求包含FULL uri(http:// ..)而不是"path".GET工作正常.这太痛苦了.
我不能使用iframe变通办法.我的问题是什么?
我必须与从 GET 请求正文中获取参数的 API 进行交互。我知道这可能不是最好的主意,但它是 API 的构建方式。
当我尝试使用 构建查询时XMLHttpRequest,看起来负载根本没有发送。您可以运行它并查看网络选项卡;请求已发送,但没有正文(在最新的 Chrome 和 Firefox 中测试):
const data = {
foo: {
bar: [1, 2, 3]
}
}
const xhr = new XMLHttpRequest()
xhr.open('GET', 'https://my-json-server.typicode.com/typicode/demo/posts')
xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8')
xhr.send(JSON.stringify(data))
Run Code Online (Sandbox Code Playgroud)
诸如 axios 之类的库是基于 XMLHttpRequest 构建的,因此它们也无法正常工作...
有没有办法在 JavaScript 中实现这一点?
json vs xml对ajax请求有什么优缺点?性能有差异吗?即浏览器是否能够比另一种更快地处理一种格式?
我在ASP.NET MVC中创建了一个Web应用程序,并尝试通过Javascript AJAX调用控制器.在Jquery中,我们可以发送一个json对象,MVC Model Binder会自动尝试创建一个.NET对象并将控制器作为参数传入.
但是我使用的是不能使用jquery的web worker.所以我通过vanilla xmlhttprequest对象进行AJAX调用.有没有办法通过这种方法发送Json对象?
我使用了xmlhttprequest的send方法,但模型对象在控制器中显示为null :(
我正在使用ajax请求(POST方法)提交表单,并检查响应上的HTTP状态代码以查看它是否成功.
它适用于Firefox,但当然不适用于MSIE-8.提交实际上工作正常,我可以检查我的服务器并确认提交工作,服务器响应状态代码为204.再次,firefox正确地从请求对象给我状态代码204,但IE给出状态代码1223年
我有什么想法可以在MSIE中获得准确的状态代码?提交表单并检查响应的代码如下所示.
var req = new XMLHttpRequest();
req.open("POST", "p.php?i=" + self.__isid, true);
//Send the proper header information along with the request
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.setRequestHeader("Content-length", formdata.length);
req.setRequestHeader("Connection", "close");
req.onreadystatechange = function()
{
if(req.readyState == 4)
{
if(req.status == 204 || req.status == 200)
{
//Success. Update the feed.
self.__postFeed.update();
self.__form.reset();
}
else
{
//TODO: Better error handling.
alert("Error submitting post:\n" + req.responseText);
}
}
}
req.send(formdata);
Run Code Online (Sandbox Code Playgroud) 我试图通过Node.js使用提交xml请求到Web服务http.request.
这是我的代码.我的问题是,而不是data=1我想发布xml到服务.
http.request({
host: 'service.x.yyy.x',
port: 80,
path: "/a.asmx?data=1",
method: 'POST'
}, function(resp) {
console.log(resp.statusCode);
if(resp.statusCode) {
resp.on('data', function (chunk) {
console.log(chunk);
str += chunk;
});
resp.on('end', function (chunk) {
console.log(str);
});
}
}).end();
Run Code Online (Sandbox Code Playgroud)
何要这样做?
我遇到了这个问题.我想这是某种IE错误,但我想确定.
所以问题是.为什么IE10 XmlHttpRequest.status返回0而不是401?
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4)
{
document.getElementById("rescode").innerHTML="Request completed with status: "+xmlhttp.status;
}
}
xmlhttp.open("GET","http://hosting.gregy.cz/cors/",true);
xmlhttp.send();
Run Code Online (Sandbox Code Playgroud)
请参阅此处的plunker:http://plnkr.co/edit/E2lCflPDHHaQi7t79IeM?p = preview
此代码触发CORS请求,该请求始终返回401. Firefox和chrome在状态属性中正确返回401,但IE10返回0.此问题会破坏我用于项目的身份验证处理方法.
谢谢
编辑:
我用onload和onerror事件处理程序修改了plunker(来自monsur评论的提示),但结果仍然相同.
我还确保IE10没有选择兼容模式.(来自cernunnos评论的提示)
new XMLHttpRequest().responseType = "json"在控制台中运行会在Firefox 26和IE11中引发"InvalidStateError"异常,但在Chrome 31中不会引发异常.
为什么?
规范说明了这一点responseType
如果状态为LOADING或DONE,则抛出"InvalidStateError"异常.
但在这种情况下,州是UNSENT.
这是怎么回事?