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