jsonpドメイン間要求エラーUncaught SyntaxError:Unexpected token:
4267 ワード
jsonpドメイン間要求エラーUncaught SyntaxError:Unexpected token:遭遇したら記録する:
自分のブログを振り返り、他人のブログを見ることで、以下のようにまとめられています.
フロントエンドコード:
$(function () {
$("#compans").val($("#selected option:selected").text());
$("#selected").change(function () {
let val=$("#selected option:selected").text();
$("#compans").val(val);
});
$('#form_login').submit(function (e) {
e.preventDefault();
// console.log($(this).serialize());
$.ajax({
type: "post",
url: "http://localhost:1337/manage/loginn",
data: $(this).serialize(),
dataType: "jsonp",
// async:'false',
// jsonp: "callback", // , jsonp ( :callback)
// jsonpCallback:"success_jsonpCallback", // jsonp , jQuery
success: function(data){
console.log(data);
console.log(data.username);
},
error:function(){
alert('fail');
}
});
});
});
バックエンドコード:
loginn:async function(req,res){
res.header('Access-Control-Allow-Origin', '*');
let compans=req.query['compans'];
let username=req.query['username'];
let row={compans,username,flag:true};
console.log(row);
res.json(row);
},
それからポイントを提出すると、コンソールが間違っています.つまり、あなたが返したフォーマットがjsonpと一致しないことを意味します.
変更後:
loginn:async function(req,res){
res.header('Access-Control-Allow-Origin', '*');
let compans=req.query['compans'];
let username=req.query['username'];
let row={compans,username,flag:true};
console.log(row);
res.jsonp(row);
},
発見していないで、実は1つ変えて、res.jsonをres.jsonpに変えて、23333333....実はここは正確にはjsonpを使うべきで、jsonpを使わないでどのように変えても、コンソールの赤い間違いを取り除くことができますが、error関数の中に入ります.私はコンソールエラー状態からコンソールエラーを報告しないでerror関数に入り、最後に正しい戻り値状態を得る.
jsonpドメイン間リクエストの説明:
jsonp: "callback", // , jsonp ( :callback)
jsonpCallback:"success_jsonpCallback", // jsonp , jQuery
リクエストの場合、デフォルトでは上記のjsonpというパラメータ(jsonp=success_jsonpCallback)が付いています.デフォルトではcallbackですが、名前を自分で作成したり、バックグラウンドで受信したりすることもできます.
let callback=req.query['callback']; success_jsonpCallback, 。
この2つの文を書く場合は、バックグラウンドに次のように書くことができます.
loginn:async function(req,res){
res.header('Access-Control-Allow-Origin', '*');
// let query=req.allParams();
let callback=req.query['callback'];
let compans=req.query['compans'];
let username=req.query['username'];
let obj=JSON.stringify({compans,username,flag:true});
let row=callback+"("+obj+")";
console.log(row);
res.jsonp(row);
},
受信値:success_jsonpCallback(「compans」:「第一創業」、「username」:「201558254008」、「flag」:true})
自分で実践してもいいです.
参考ブログ:https://blog.csdn.net/wqmain/article/details/8905287