2012-02-15 46 views
0

我有一個主頁,您可以填寫一些數據。點擊鏈接「創建」後,它會調用ajax插入新的記錄到MySQL數據庫(使用主頁面的數據)。我在插入這個新記錄的mysql表中有一個auto_increment主鍵,我需要在「create」鏈接重定向的頁面上知道這個鍵。所以要顯示在一個簡短的例子中,我有這樣的:鏈接重定向前ajax調用Php會話不起作用

index.php有一個鏈接創建 index.php也有這個jquery $(「#create」)。click($。ajax({url :「create.php」,cache:false,data:{...來自index.php的一些數據...}}));

create.php將記錄插入數據庫,然後執行$ _SESSION [「id」] = mysql_insert_id();

new.php需要得到$ _SESSION這個ID [「身份證」]

當我想我之前打電話給AJAX(插入記錄)點擊事件以外(主要頁面加載後使立即)實際上點擊了完美的鏈接。然而,這種方式隨機使用。有時它確實有時它不會,並且它從未在Google Chrome中以這種方式工作過......

我在文檔的開頭恰當地使用了session_start(),所以這裏沒有問題。

非常感謝您爲我提供的任何幫助,我在這方面苦苦掙扎了很多天,最後我發現問題來自於ajax在點擊事件中的呼叫位置,但我不知道如何解決它。我想我錯過了一些有關如何確切做頁面重定向和點擊事件與Ajax一起工作的知識。

+0

相信,你不只是忘了阻止點擊事件,直到ajax-請求已完成? (例如:$()。click(function(){return false;});) – 2012-02-15 22:08:32

回答

0

首先您的會話必須在index.php頁面中啓動,以便new.php和create.php將在會話cookie中接收會話ID。理論上你可以調用$ .ajax,然後在窗口之後立即改變窗口的位置。然而,這並不能保證你的create.php作爲完成的執行(即創建你想要的行並將你想要的數據插入到應該存儲在數據庫中的會話中)。這可能會導致您遇到的競爭狀況。

要解決這個問題,你只需要改變你的窗口的URL在Ajax調用成功的功能,如:

$("#create").click($.ajax({ url: "create.php", cache: false, data: { ... some data from index.php ... }, success: function() { window.location = 'new.php'; } }));