今天在使用七牛的sdk做斷點續傳時候,當文件過大,本地沒有存儲時候,想要通過ajax將本地信息存到服務器緩存,之后通過讀取緩存的方式來完成文件過大斷點續傳無法使用問題。 但是在使用ajax請求的時候,發現賦值和請求通過server端都能夠請求到。但是請求顯示的時候顯示仍然是undefined。下面是自己的代碼:
//查詢服務器是否有該值 function getLocalStorage(fileName){ $.ajax({ url : "/live/get-localStorage", data : {fileName:fileName}, type : "POST", dataType: "json", async:false, success: function(data){ console.log("data:" + data); return eval("("+data+")"); }, error:function () { console.log("查詢出錯!") } }); }
剛開始時候是沒有添加async:false,后來看到ajax請求了但是結果出來的比較慢,想到ajax異步請求返回數據慢的問題,然后改為了同步。但是賦值時候仍然是undefined...
原因不得而知,明明是后端也顯示出來了。之后看網上說在結果里面用一個方法來得到,再試了下可以了。代碼如下:
var temp; //查詢服務器是否有該值 function getLocalStorage(fileName){ $.ajax({ url : "/live/get-localStorage", data : {fileName:fileName}, type : "POST", dataType: "json", async:false, success: function(data){ temp = data; // return eval("("+data+")"); }, error:function () { console.log("查詢出錯!") } }); console.log("temp:" + temp); return temp; }
比較了下,就是賦值的時候寫了一個全局變量。。。