如何在node.js中使用jQuery ajax调用
这类似于Node.js的Stream数据,但是我觉得这个问题没有得到足够的回答。
我正在尝试使用jQuery ajax调用(get,load,getJSON)在页面和node.js服务器之间传输数据。我可以从浏览器中找到该地址,然后看到“
Hello World!”,但是当我从页面尝试此操作时,它失败并显示没有任何响应。我设置了一个简单的测试页面和hello world示例进行测试:
<!DOCTYPE html><html lang="en">
<head>
<meta charset="utf-8" />
<title>get test</title>
</head>
<body>
<h1>Get Test</h1>
<div id="test"></div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js"></script>
<script>
$(document).ready(function() {
//alert($('h1').length);
$('#test').load('http://192.168.1.103:8124/');
//$.get('http://192.168.1.103:8124/', function(data) {
// alert(data);
//});
});
</script>
</body>
</html>
和
var http = require('http');http.createServer(function (req, res) {
console.log('request received');
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(8124);
回答:
如果您的简单测试页位于hello world
node.js示例之外的其他协议/域/端口上,则说明您正在执行跨域请求并违反了相同的原始策略,因此jQuery
ajax调用(获取和加载)无提示地失败。为了获得跨域工作,您应该使用基于JSONP的格式。例如node.js代码:
var http = require('http');http.createServer(function (req, res) {
console.log('request received');
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('_testcb(\'{"message": "Hello world!"}\')');
}).listen(8124);
和客户端JavaScript / jQuery:
$(document).ready(function() { $.ajax({
url: 'http://192.168.1.103:8124/',
dataType: "jsonp",
jsonpCallback: "_testcb",
cache: false,
timeout: 5000,
success: function(data) {
$("#test").append(data);
},
error: function(jqXHR, textStatus, errorThrown) {
alert('error ' + textStatus + " " + errorThrown);
}
});
});
还有其他方法可以使此工作正常进行,例如通过设置反向代理或完全使用express这样的框架来构建Web应用程序。
以上是 如何在node.js中使用jQuery ajax调用 的全部内容, 来源链接: utcz.com/qa/404766.html