サーバー側には、POSTリクエストを受信するための次のコードがあります。
router.post('/signup', function(req, res, next) {
//console.log(res);
passport.authenticate('signup', function(err, user, info) {
console.log(user);
if (err) {
console.log(err);
return next(err);
}
if (!user) { return res.json({redirect: 'auth'}); }
req.logIn(user, function(err) {
if (err)
{
console.log(err);
return next(err);
}
console.log(res);
return res.json({redirect: 'userPanel'});
});
})(req, res, next);
});
クライアント側では、次の関数がPOSTリクエストを実行し、レスポンスを処理します。
$("#btn-signup").click(function() {
var data = $('form#signupform').serialize();
$.ajax({
type: "POST",
dataType: "jsonp",
url: "/auth/signup", //process to mail
data: data,
success: function(msg) {
console.log("Received data: " + msg);
if (msg.redirect) {
window.location.href = msg.redirect;
}
},
error: function(e) {
console.log("Error: " + e.responseText);
}
});
});
ポストリクエストを行うと、次のコンソール出力が表示されます。
Error: {"redirect":"auth"}
したがって、サーバーはすべてを正しく返すと思いますが、クライアント側でエラーと見なされる理由はわかりません。
何が悪いのか誰か知っていますか?
解析エラーが発生していると思います。jQueryは、コールバック関数でラップされたJSONであるJSONPを期待しています。
callback({"key" : "value"});
ただし、次のように、通常のJSONのみを返します。
{"key" : "value"}
jQueryのためのデータ型を変更jsonp
だけにjson
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加