如何在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

回到顶部