在发送jsonp请求phonegap时捕获响应

我写的应用程序通过手机服务器端我写nodejs

exports.login = function(request, response) { var keys = Object.keys(request.query); request.body= JSON.parse(keys[1]); Accounts.findOne({ name : request.body.name }, function(err, docs) { if (!docs) { response.json('{"error": "user-not-found"}'); } else { console.log("docs: ", docs); Accounts.validatePassword(request.body.password, docs['hashedPass'], docs['salt'], function(error, res) { if (error) { response.json(error); } if (res) { generateToken(request.body.name, request.body.device, function(res) { if (res) { response.json('{"token": "' + res + '"}'); } else { response.json('{"error": "cant-create-token"}'); } }); } else { response.json('{"error": "invalid-password"}'); } }); } }) } 

Phonegap:我写函数login

 function LoginUser(info) { var varUrl=server+"/auth/login"; $.ajax({ url:varUrl, type:"GET", contentType:"application/json", headers: { Accept:"application/json", "Access-Control-Allow-Origin": "*" }, data:info, dataType:"jsonp", success:function(data) { console.log("HERE"); console.log(data); }, error: function(err){ console.log(err); } }); } 

我要求它会这样http://localhost:3000/auth/login?callback=jQuery161014894121675752103_1361459462241&{%22name%22:%22fdfdfd%22,%22password%22:%22fdfdfdfd%22}&_=1361459615743

而当我在Chrome开发者标签networking的响应中看到的是"{\"error\": \"user-not-found\"}"

但我不能捕获function LoginUser(info)上面这repsonse如何得到它,因为在控制台它打印error: function(err){ console.log(err); } error: function(err){ console.log(err); }

我不知道为什么。 你可以帮我吗。

在服务器端,你必须使用callback,并在你的jsonp文件的响应你需要做的:

 jQuery161014894121675752103_1361459462241({"error": "user-not-found"}) 

函数名称来自jsonp请求中的callbackvariables。 导致一个jsonp请求只是“包含”脚本标记在您的网站,它可以执行js(基本上)。