Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在express中读取jsonp数据_Javascript_Json_Node.js_Cordova_Express - Fatal编程技术网

Javascript 如何在express中读取jsonp数据

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

我正在尝试将数据从phonegap发送到express应用程序。这是我的密码:

电话差距:

    $.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数据,因此它不是最干净或最简单的。