使用jsonp完成跨域請求,但是請求的連結是js檔案,請求總是那個js報錯,怎莫辦?

來源:互聯網
上載者:User
把連結換成php就沒問題。

$.ajax({type:'GET',async:false,url:"http://app.veishu.com/jsonp/categories/all.js",dataType:"jsonp",success:function(data){alert("success");// alert(data[0]);// var dataHtml=""// for(var i=0; data.length;i++){// dataHtml+="";}$(".list").html(dataHtml);},error:function(){alert("ajax is error");}});

這個ajax不會進入error,也沒有進入success。
在那個連結的js那報錯。
如果把連結換成php會成功進入success。
但這個js檔案的連結直接在瀏覽器開啟也沒有問題,可以出現json。不知怎麼回事?
還有瀏覽器開啟js檔案有unicode字元,該怎麼轉!

回複內容:

使用Jquery進行Jsonp調用,返回的json資料需要帶callback名稱,同時因為你的傳回值是待用資料,所以應該指定jsonpCallback的名稱。

jQuery(document).ready(function(){         $.ajax({             type: "get",             async: false,             url: "http://app.veishu.com/jsonp/categories/all.js?1.2.1",             dataType: "jsonp",             jsonpCallback:"flightHandler",//自訂的jsonp回呼函數名稱             success: function(data){             },             error: function(){             }         });     });

返回的all.js資料格式如下:

flightHandler({"success":true,"data"[{"name":"\u624b\u5de5DIY","position":0,"slug":"handicraft"}]});

JSONP 的原理:segmentfault.com/q/1010000002608394/a-1020000002608399
靜待資源檔在增加 callback 的 GET 參數之後並沒有返回一個執行函數形式的 JS 檔案,所以載入失敗。

app.veishu.com/jsonp/categories/all.js 可否貼下all.js的代碼??

沒記錯的話,jsonp請求要求伺服器端返回的json資料被括弧()包起來。

jsonp的原理就是請求一段js, all.js有語法錯誤。

你這個app.veishu.com/jsonp/categories/all.js返回的資料結構是沒法做jsonp的,jsonp應該返回類似這種資料結構callback(data);其中data即為你要返回的json資料

【相關推薦】

1. 精選:“php程式員工具箱”V0.1版本下載

2. php免費視頻教程

3. php開發驗證碼最新視頻教程

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.