我使用XMLHttpRequest从javascript发送json格式的数据,并在node.js文件中接收数据,如下所示
client.js
$.ajax({
type: "POST",
dataType: 'json',
data: JSON.stringify(Idata),
url: AjaxURL,
success: function (result) {
return true;
}
});
server.js
var http = require('http');
console.log("server initialized");
var server = http.createServer(function (req, response) {
req.on('data', function (data) {
var d = JSON.parse(data);
console.log("data : " + d.OperationType);
});
req.on('end', function () {
response.end();
});
}).listen(3000);
现在我成功获得了operationtype的值,但是客户端浏览器显示错误:
XMLHttpRequest无法加载http://localhost:3000/。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' http://localhost'因此不允许访问。
答案 0 :(得分:0)
请执行以下操作:
client.js
中,在发送之前输出值Idata
(使用console.log
)。server.js
中,在收到后立即输出值data
(使用console.log
)。这可能会让您了解它出错的地方,这将有助于您确定下一步行动。如果您仍然不知道如何继续,请更新问题,我将更新我的答案。
根据我对node.js的了解(非常缺乏),我现在可以说的是,如果变量data
被视为对象,store += data;
不是一个好主意,因为这意味着你试图将一个对象添加到(空)字符串。
(可能导致对象返回“[object Object]”或某些此类)
答案 1 :(得分:0)
主要问题是您正在发出"GET"
请求。无法使用XMLHttpRequest "GET"
请求上载数据有效内容/ HTTP请求正文。请参阅specification of XMLHttpRequest:"如果存储方法是GET,则表明数据参数为空。"
为了发送数据,您应该发出"POST"
请求,在这种情况下:
xmlhttp.open("POST", AjaxURL, true);
回应更新的问题:
出于安全原因,您的AJAX请求将不被允许访问localhost:3000
托管的服务器,除非AJAX请求是从localhost:3000
提供的页面启动的,或者您告诉您的服务器允许&# 34;跨来源"要求。后者可以通过向您的服务器添加这样的行来完成:
response.setHeader("Access-Control-Allow-Origin", "*");
这设置了一个标题,告诉浏览器允许AJAX请求localhost:3000
,即使请求是从localhost:3000
未提供的页面发起的。