1. 程式人生 > >ajax非同步回撥函式中給外部變數賦值的問題

ajax非同步回撥函式中給外部變數賦值的問題

<!doctype html>
<head>
	<meta charset="utf-8">
</head>
<body>
<script src="http://localhost/UIBMSPHPProj/public/js/jquery-1.8.2.min.js"></script>
<script>
$(function(){
	var str = "aaa";
	$.post("http://localhost/UIBMSPHPProj/index.php/Index/abc",{},function(data){
		//data = "bbb";
		console.log(str);//aaa
		str = data;
		console.log(str);//"bbb"
	});
	console.log(str);//"aaa"
});
</script>
</body>
</html>

ajax回撥函式非同步的原因導致了在外部直接獲取str的值時還是“aaa”,需要用“bbb”時,可以將用"bbb"的函式放入回撥函式中呼叫。

相關推薦

ajax非同步函式外部變數的問題

<!doctype html> <head> <meta charset="utf-8"> </head> <body> <script src="http://localhost/UIBMSPHPProj

Ajax非同步函式(callback)

ajax請求確實是非同步的,不過這請求是由瀏覽器新開一個執行緒請求,當請求的狀態變更時,如果先前已設定回撥,這非同步執行緒就產生狀態變更事件放到 JavaScript引擎的處理佇列中等待處理。見:htt

ajax函式巢狀ajax

問題 專案需要在第一個請求執行成功取得一些引數後,立即執行第二個請求,而直接巢狀沒有達到想要的的效果 解決 ajax中有一個async引數(非同步屬性),預設為true。故將其設定為false即可

awk外部變數

假設將值存在檔案t中,檔案t內容如下,只有一行:a b c需要將a、b和c分別賦給外部變數x、y和z,則指令碼可寫成如下:eval $(awk '{ printf("x=%s\ny=%s\nz=%s",$1,$2,$3); }' ./t)echo $xecho $yec

js的for迴圈與非同步函式執行順序問題

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!                for(i=localStorage.length-1;i>=0;i--){//從後往前依次取每條localstorage local_key=local

nodejs request模組使用promise 返回函式

var request = require('request'); //exports.httprequest = (requestData) =>{ function httprequest(requestData){ return new Promise((resolve, rejec

js同步非同步 函式

js同步非同步 同步 指的是一次只能完成一件任務。如果有多個任務,就必須排隊,前面一個任務完成,再執行後面一個任務,以此類推。 非同步 是指每一個任務有一個或多個回撥函式,前一個任務結束後,不是執行後一個任務,而是執行回撥函式,後一個任務則是不等前一個任務結束就

Nodejs 函式的坑以及中介軟體的用法

在用Nodejs + express 開發後臺的過程中,最令人頭疼的就是到處存在的回撥函數了。不管是http請求,還是資料庫請求,都是強制回撥的。這是由js本身的特性導致的。 所謂回撥,就是指假設A將任務分配給B去執行。之後A就可以把這個任務放在一邊,去執行其

ajax函式(done,fail,always)

直接上程式碼 <!DOCTYPE html> <html> <head>     <meta charset="utf-8"><title>ajax</title><script type="te

關於函式const std_msgs::String::ConstPtr& msg的一些解釋

      當訊息自動生成到C++程式碼時,定義了幾種型別。其中一個是::Ptr,它被型別化為boost::shared_ptr,另一個是::ConstPtr,它是boost::shared_ptr。通過將const指標傳遞到回撥,我們避免了複製。雖然這對std_msgs::

python 管道 事件 訊號量 程序池(map/同步/非同步)函式

####################總結######################## 管道:是程序間通訊的第二種方式,但是不推薦使用,因為管道會導致資料不安全的情況出現 事件:當我執行主程序的時候 需要子執行某個程序後 需要的返回值時 可以使用 訊號量:互斥鎖同時只允許一個執行緒更改資料,而訊號

Ajax請求函式沒有被呼叫

    $.ajax({        type:"post",        url:"http://172.16.41.91:8080/FcsServletSSM/users/register", 

jquery的ajax success函式不執行

     弄了好長時間,執行ajax請求的介面一直返回404,請求壓根就沒有傳到後臺,除錯了半天,原因找到了ajax請求裡面的引數一定得跟java後臺裡面的請求引數保持一致才行; data.productName = productname;

AJAX使用函式

<!DOCTYPE html> <html> <head> <script> var xmlhttp; function loadXMLDoc(url,cfunc) { if (window.XMLHttpRequest)  

WebService、Ajax函式(一)

       本例項演示藉助WebService、Ajax技術和回撥函式,從MSSQL資料庫中獲取所需資料,並用JavaScript語言將資料結果顯示到網頁地圖上。 1、WebService        (1)在工具箱的Ajax Extentions下面找到ScriptM

AJAX函式

AJAX = Asynchronous JavaScript and XML(非同步的 JavaScript 和 XML)。 通過 AJAX,JavaScript 無需等待伺服器的響應,而是: 在等待伺服器響應時執行其他指令碼當響應就緒後對響應進行處理 AJAX - 建

vue使用axios的函式this不指向vue例項,為undefined

今天在vue-cli腳手架搭建的專案中使用axios時,遇到無法解析this.$route的報錯資訊,最後發現是作用域的問題。 1.解決方法:使用 => 原始碼: axios.get('/u

如何在dwr的函式傳遞多個引數

<script src='/wh/dwr/interface/RjlbHelper.js'></script> <script> function show(v_lbid,v_obj){  RjlbHelper.getSubRjlbsByF

函式window.open()被攔截

在回撥函式中window.open預設是會被攔截的,因為瀏覽器判斷它不是使用者自己開啟的,存在安全風險,所以可以偽造一個使用者點選事件來避開,程式碼如下: function newWindow(url

js 非同步函式的用法

function gettime(){         var time;         $.ajax({           url:"?action=gettime",           async:false,           type:"GET",