2012-12-07 16 views
0

我一直堅持這個bug很長一段時間了,我只是有一點知識的PHP來解決它。所以我祈求你的幫助。獲取請求後消失在PHP後通話

我的問題是,在我向我的站點發布post(或ajax)請求後,GET請求消失,因此留下一個NULL對象(因爲我從該ID創建了該對象)。

我已經做了一些測試,問題是在我從POST獲得的響應GET是NULL。而且,如果我忘記獲得並僅以隨機數字啓動id,則不會發生這種情況。

這裏是我的代碼一些地方,我認爲這個問題是:

首先是我得到的php:

require 'php/functions.php'; 

    if (isset($_GET['id'])) { 

    $id = $_GET['id']; 

    // $id = 5; 

    try { 
    $bar = getBarById($id); 
    } catch (exception $e) { 
     exit; 
    } 

這個我輸出後從對象的一些日期和它的作品全部很好,GET在這裏啓動。

現在。當我做我的ajax(我也試過普通的POST)請求時,來自POST的狀態響應是確定的,但在此之後沒有任何反應,並且det響應表示我的GET請求爲NULL。

的JS:

<script language="javascript" type="text/javascript"> 
function save(value) { 
$.ajax({ 
type: "POST", 
url: "barpage.php", 
data: { save_sum: value } 
}).done(function(msg) { 
    msg.preventDefault(); 
alert(msg); 
}); 
} 

只是爲了記錄。這是來自ajax的「msg」響應,告訴我沒有任何事情發生。並且「$ id」是NULL。

我在做什麼錯了?

謝謝。

+0

你不能設置一個GET參數...'barpage.php ID = 5'會是你需要什麼'網址:' 。 – phpisuber01

+0

個人我會建議由deleteman回答..我認爲你只是試着讓你不需要它。我會建議只使用後和$ _POST ..使用三元運算符,使您的代碼可讀 –

回答

2

這裏的交易:

你的AJAX請求做一個POST請求,因此GET數組未被填充,因爲,您正在執行POST請求而不是GET請求。速戰速決將發送ID作爲Ajax請求的一部分,並在你的PHP文件,要求它這樣的:

$id = isset($_GET['id']) ? $_GET['id'] : null; 
if($id == null) { 
    $id = isset($_POST['id']) ? $_POST['id'] : null; 
} 

另一種解決方案

$id = null; 
if($_SERVER['REQUEST_METHOD'] == "GET") { 
    $id = isset($_GET['id']) ? $_GET['id'] : null; 
} 
if($_SERVER['REQUEST_METHOD'] == "POST") { 
    $id = isset($_POST['id']) ? $_POST['id'] : null; 
} 

一個更好解決方案(摘自下面的評論)

$id = isset($_REQUEST['id']) ? $_REQUEST['id'] : null; 

希望幫助!

+0

他可以搜索direclty'$ _REQUEST ['id']' –

+0

@PlamenNikolov感謝您的建議,我已經將您的想法添加到可能解決方案列表:) – Deleteman

+0

好吧,我應該在'ajax中發送'id'和'save_sum'一起嗎? – user1627114

0

您是POST-將您的數據傳輸到您的PHP頁面,而不是發送GET請求。

function save(value) { 
$.ajax({ 
type: "GET", 
url: "barpage.php", 
data: { save_sum: value } 
}).done(function(msg) { 
    msg.preventDefault(); 
    alert(msg); 
}); 
} 

或者你可以做一個POST但把GET變量在url對象:

function save(value) { 
$.ajax({ 
type: "POST", 
url: "barpage.php?id=5", 
data: { save_sum: value } 
}).done(function(msg) { 
    msg.preventDefault(); 
    alert(msg); 
}); 
} 
0

你做錯了幾件事情:

  • 使POST Ajax請求,但在相同的時間尋找一個GET參數
  • POST數據save_sum但看id

反正這裏是可能的解決方案,但我們無法完全猜到您的操作:

請試試這個:

$.ajax({ 
    type: "POST", 
    url: "barpage.php?id=<?php echo $_GET['id']; ?>", 
    data: { save_sum: value } 
    }).done(function(msg) { 
     msg.preventDefault(); 
    alert(msg); 
    }); 
    } 

或類型更改爲 「GET」:

$.ajax({ 
    type: "GET", 
    url: "barpage.php?", 
    data: { save_sum: value, id: <?php echo $_GET['id']; ?> } 
    }).done(function(msg) { 
     msg.preventDefault(); 
    alert(msg); 
    }); 
}