标签: xmlhttprequest

document.write()覆盖文档?

这个:

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)

supmyDivdiv元素中添加一个字符串.这正是我想要的.但是,这个:

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页面的一部分.与我的第一个示例相同,但首先加载文本文件.

html javascript xmlhttprequest document.write

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

使用Express 4在Node.js中解析JSON post请求

我正在尝试编写一个简单的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)

谁能提出原因?

json xmlhttprequest node.js express

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

使用Squid3代理时,POST绝对URI由XmlHttpRequest发送到服务器

我现在遇到了一个奇怪的问题,即我正在开发的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变通办法.我的问题是什么?

javascript xmlhttprequest squid google-chrome-extension

18
推荐指数
1
解决办法
464
查看次数

在 JavaScript 中发送带有正文的 GET 请求 (XMLHttpRequest)

我必须与从 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 中实现这一点?

javascript ajax rest xmlhttprequest http-get

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

json vs xml对ajax请求有什么优缺点?

json vs xml对ajax请求有什么优缺点?性能有差异吗?即浏览器是否能够比另一种更快地处理一种格式?

xml ajax json xmlhttprequest

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

如何将Json对象(或字符串数​​据)从Javascript xmlhttprequest发送到MVC Controller

我在ASP.NET MVC中创建了一个Web应用程序,并尝试通过Javascript AJAX调用控制器.在Jquery中,我们可以发送一个json对象,MVC Model Binder会自动尝试创建一个.NET对象并将控制器作为参数传入.

但是我使用的是不能使用jquery的web worker.所以我通过vanilla xmlhttprequest对象进行AJAX调用.有没有办法通过这种方法发送Json对象?

我使用了xmlhttprequest的send方法,但模型对象在控制器中显示为null :(

javascript asp.net asp.net-mvc xmlhttprequest

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

MSIE为Ajax请求返回状态代码1223

我正在使用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)

javascript ajax internet-explorer xmlhttprequest

17
推荐指数
1
解决办法
7216
查看次数

如何在node.js http.request中发布XML数据

我试图通过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)

何要这样做?

post xmlhttprequest node.js express

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

IE 10中的XmlHttpRequest状态为0而不是401

我遇到了这个问题.我想这是某种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评论的提示)

javascript xmlhttprequest cors internet-explorer-10

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

为什么在调用open throw之前设置XMLHttpRequest responseType?

new XMLHttpRequest().responseType = "json"在控制台中运行会在Firefox 26和IE11中引发"InvalidStateError"异常,但在Chrome 31中不会引发异常.

为什么?

规范说明了这一点responseType

如果状态为LOADING或DONE,则抛出"InvalidStateError"异常.

但在这种情况下,州是UNSENT.

这是怎么回事?

javascript ajax w3c specifications xmlhttprequest

17
推荐指数
2
解决办法
9271
查看次数