2017-04-16 24 views
0

我正面臨一個奇怪的問題。考慮我有一個Ajax電話,PHP阻止代碼,在Zend服務器中也阻止下一個Ajax調用的響應

$.ajax({ 

    url:"url1.php", 

}) 

這個Ajax調用我有一個第二Ajax調用作爲後,

$.ajax({ 

    url:"url2.php", 

    success:function(data){console.log(data);} 
}) 

url1.php如下;

$sql="SELECT * from db/tbl"; 
echo $sql; 

$_SESSION["filename"]=$time; 
$_SESSION["detail-status"]="Data fetching will start"; 
$_SESSION["status"]="starting"; 

if (!($stmt = db2_exec($this->db2conn, $sql, array('CURSOR' => DB2_SCROLLABLE)))) 
{ 
    echo $sql."<b>Error ".db2_stmt_error() .":".db2_stmt_errormsg(). "</b>"; 
    die; 
} 
while ($row = db2_fetch_assoc($stmt)) 
{ 
    //........ 
} 

url2.php如下;

<?php 
session_start(); 
echo "hello world"; 
?> 

現在我在URL1阻擋代碼(即從取分貝巨大量的數據[IBM DB2])。現在的問題是,我沒有得到任何迴應,從url2在第二個Ajax調用,直到我的第一個Ajax調用完成。 在顯示第二個Ajax調用狀態的Chrome網絡選項卡中,正在等待。在後端服務器是Zend服務器,我沒有任何訪問權限。

您能否介紹一下,爲什麼會發生這種情況?

如果您需要更多信息請提。

+0

https://developers.google.com/web/fundamentals/getting-started/primers/promises –

+0

這是什麼?你讀過我問過的嗎? –

+1

對不起,我的錯。這些是會話鎖。只要谷歌,開始你的旅程;)如果你可以分享更多的上下文,也許我能夠解釋一些概念和幫助。 –

回答

-2

Ajax調用的定義是異步這意味着他們的請求被分開處理。這就是爲什麼你有回調函數或Javascript中的Promise對象來處理接收到響應後的下一步。因此,您應該在第一次Ajax調用中包含您的下一個ajax調用成功屬性。

+0

你甚至不理解我的問題。我從來沒有問過。 –

+0

服務器端的代碼是什麼?你怎麼知道它是阻塞的。如果沒有第一次呼叫,它會自動發送迴應答。 – TurtleTread

+0

我在服務器端編寫了什麼代碼,它從db中獲取了大量的數據。 –