js如何把ajax获取的值返回到上层函数里?
我現在有個系統在用戶點擊瀏覽時,系統會以ajax的方式從后臺獲取查看的鏈接,并以window.open的方式打開,但因為現在多數的瀏覽器都會攔截window.open打開的地址,而window.location.href的方式又無法在瀏覽器新窗口打開,所以我現在只能通過在前臺頁面的onclick函數中實現window.open(使用該方式,瀏覽器不會攔截),我原來的代碼是如下這樣的:
function GetViewUrl(bookID, $, layer, siteURL) {$.ajax({type: "post",data: { 'BookID': bookID },datatype: "text/json",scriptCharset: 'utf-8',url: siteURL 'Parts/GetViewUrl',success: function (year) {if ($.trim(year) != '') {var defalutFileName = bookID '.html';url = siteURL 'Parts/ViewItem/' year '/' bookID '/' defalutFileName;window.open(url);}},error: function () {}});} 我現在想修改該段代碼,讓這個函數返回url,可以給外部的函數調用,這段代碼要怎么改?其實很簡單:只要修改三個地方:
1.在該段代碼新增一個全局返回的變量
2.把該段ajax調用的方式改為非異步,也就是新增一個?async: false,
3.在最后返回定義的全局變量
代碼如下:
function GetViewUrl(bookID, $, layer, siteURL) {
? ? var url = '';//定義要返回給外部函數的值
? ? $.ajax({
? ? ? ? async: false,//這一步非常重要
? ? ? ? type: "post",
? ? ? ? data: { 'BookID': bookID },
? ? ? ? datatype: "text/json",
? ? ? ? scriptCharset: 'utf-8',
? ? ? ? url: siteURL 'Parts/GetViewUrl',
? ? ? ? success: function (year) {
? ? ? ? ? ? if ($.trim(year) != '') {
? ? ? ? ? ? ? ? var defalutFileName = bookID '.html';
? ? ? ? ? ? ? ? url = siteURL 'Parts/ViewItem/' year '/' bookID '/' defalutFileName;//從服務器獲取值
? ? ? ? ? ? }
? ? ? ? ? ?
? ? ? ? },
? ? ? ? error: function () {
? ? ? ? ??
? ? ? ? }
? ? });
? ? return url;//返回值
}
總結
以上是生活随笔為你收集整理的js如何把ajax获取的值返回到上层函数里?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Bootstrap中的列表的使用
- 下一篇: jQuery.extend() 使用语法