Javascript 如何在express中读取jsonp数据
我正在尝试将数据从phonegap发送到express应用程序。这是我的密码: 电话差距:Javascript 如何在express中读取jsonp数据,javascript,json,node.js,cordova,express,Javascript,Json,Node.js,Cordova,Express,我正在尝试将数据从phonegap发送到express应用程序。这是我的密码: 电话差距: $.ajax({ type: 'POST', url:"http://127.0.0.1:3000/test", data: {"test":"this works!"}, dataType: 'jsonp', crossDomain: true, contentType: 'application/j
$.ajax({
type: 'POST',
url:"http://127.0.0.1:3000/test",
data: {"test":"this works!"},
dataType: 'jsonp',
crossDomain: true,
contentType: 'application/json',
success: function(data){
console.log('data successfully sent');
},
error: function(){
console.log('there was an error');
}
});
快递:
app.post('/ajax' , function (req , res){
console.log(req.body)
res.redirect('/test');
});
现在,req.body
是一个空对象。我已经在堆栈顶部包含了express.bodyParser()
,还尝试了JSON.parse(req.body)
和JSON.stringify(req.body)
,但都没有成功
有人能想出别的办法来试试吗?因为是jsonp,我需要做一些不同的事情吗
请让我知道。谢谢 jquery:
$.getJSON(
"http://127.0.0.1:3000/test?callback=?",
{"test":"this works!"},
function(data){
// data should be {foo: "bar"}
// ... DO CODE
}
);
节点:
app.get('/test' , function (req , res){
// req.query should be {test: "this works!"}
// ... DO CODE
res.jsonp({foo: "bar"})
});
您是否完全确定第一个示例(使用jQuery)?JSONP和http post不兼容。尝试使用http GET。它显示了成功函数,所以我认为它可以工作。GET应该在ajax调用、express应用程序中,还是同时在两者中?您手动将内容指定为JSON,但是
.ajax
将数据转换为querystring,而不是JSON对象。尝试JSON.stringify
ing数据。查看这篇文章:它有一个使用jQuery的PhoneGap和JSONP的工作示例。我尝试了改变我能得到的一切。仍然得到相同的东西、成功函数、200代码和空对象@TimBrown有什么办法吗?谢谢你。看起来$.getJSON是一个速记ajax请求?如果你不介意我问的话,“?回调=?”的意义是什么?为什么需要包括这一点?另外,它应该是res.jsonp(req.query)吗?为什么res.jsonp使ajax调用能够工作?.getJSON
就是它的简称:获取json(更多信息)。callback=?
部分将请求从普通json GET更改为jsonp GET。jsonp请求添加一个回调查询参数,服务器将其响应封装在该参数中(例如:带有callback=foo
的请求意味着服务器将发回foo(此处为服务器数据)
)。在本例中,jquery用jquery期望的实际回调替换callback=?
,而?只是一个简单的占位符。太棒了。非常感谢。如果没有你的帮助,我是不可能弄明白的!没问题。我记得当我第一次使用jsonp时,我也对它感到困惑。这很奇怪,而且主要是一种黑客行为,因此我们可以从不同的域获取json数据,因此它不是最干净或最简单的。