簡體   English   中英

在連續調用一個ajax調用之后,從數據庫中獲取php變量的值

[英]Getting value of a php variable from database after an ajax call for a successive ajax call

var friendRequestURL = "scripts_for_profile/request_as_friend.php";
function addAsFriend(a,b) {
$("#add_friend_loader").show();
$.post(friendRequestURL,{ request: "requestFriendship", mem1: a, mem2: b,   thisWipit: thisRandNum } ,function(data) {
$("#add_friend").html(data).show().fadeOut(12000);
$("#friends").html('<div id="land"><a href="#" onclick="return false" onmousedown="toggleInteractContainers(\'cancel_request\');" >Cancel Request</a></div>').show();
}); 
}

function cancel_request(x) {
$.post(friendRequestURL,{ request: "cancel", reqID: x, thisWipit: thisRandNum } ,function(data) {
    $("#cancel_request").html(data).show().fadeOut(12000);
    $("#land").html('<div id="friends"><a href="#" onclick="return false"   onmousedown="javascript:toggleInteractContainers(\'add_friend\');">Add as Friend</a></div>').show();
});
}

這是將好友請求發送給人們的功能,並且在發送請求時,“添加為好友”選項將更改為“取消請求”。

function toggleInteractContainers(x) {
    if ($('#'+x).is(":hidden")) {
        $('#'+x).slideDown(200);
    } else {
        $('#'+x).hide();
    }
    $('.interactContainers').hide();

}

此功能調用切換按鈕,就像用戶單擊“添加為朋友”一樣,然后詢問選項“是”或“取消”。

php代碼是

<div id="land"><a href="#" onclick="return false" onmousedown="toggleInteractContainers(\'cancel_request\');" >Cancel Request</a></div>

<div id="friends"><a href="#" onclick="return false" onmousedown="javascript:toggleInteractContainers(\'add_friend\');">Add as Friend</a></div>


          <div class="interactContainers" id="add_friend" style="float:right; margin-right:100px; margin-top:0px;">
           Really?
            <a href="#" onClick="return false" onMouseDown="javascript:addAsFriend(<?php echo $logOptions_id; ?>, <?php echo $id; ?>);">Yes</a>
            <a href="#" onClick="return false" onMouseDown="javascript:toggleInteractContainers('add_friend');">cancel</a> 
      </div>

          <div class="interactContainers" id="cancel_request" style="float:right; margin-right:100px; margin-top:0px;">
           Really?
            <a href="#" onClick="return false" onMouseDown="javascript:cancel_request(<?php echo $requestID ; ?>)">Yes</a>
            <a href="#" onClick="return false" onMouseDown="javascript:toggleInteractContainers('cancel');">cancel</a> 
      </div>

php代碼不在單個位置,而是分散在頁面中。 我的問題是,代碼首先運行良好。 就像用戶單擊“添加為朋友”一樣,它要求他們“真的”或“取消”。 然后,如果用戶單擊“確實”,則“添加為朋友”將更改為“取消請求”,並向用戶發送請求。 然后,如果用戶單擊“取消請求”而沒有頁面刷新,那么它也可以正常工作,並詢問“真正”或“取消”,如果用戶單擊“真正”,則請求被取消,但是如果他單擊“取消”,則請求為沒有取消。

因此,基本上的問題是,如果發送了請求並且頁面沒有刷新,那么請求id將不會被更新,因此我們無法取消請求。

無論如何,我可以在不刷新頁面的情況下獲取requestID的值

在scripts_for_profile / request_as_friend.php中,以下是用於在數據庫中插入好友請求的代碼。

$sql = mysql_query("INSERT INTO friends_requests (mem1, mem2, timedate)     VALUES('$mem1','$mem2',now())") or die (mysql_error("Friend Request Insertion Error"));

直接從文檔的一個例子http://api.jquery.com/jQuery.post/

$.post("test.php", { name: "John", time: "2pm" },
   function(data) {
     alert("Data Loaded: " + data);
});

datatest.php的輸出,它被發送回$.post函數的回調。 因此,在您要進行服務器端更新的PHP文件* scripts_for_profile / request_as_friend.php *中,您可以回顯請求ID,並將像上面的示例一樣返回該ID。

PHP中的另一種方法是創建一個對象,然后對其進行JSON編碼,以便在返回該對象時,可以在Javascript中使用JSON。

<?php
   // Do some database stuff here
   ...

   // Create object
   $obj = new stdClass();

   // Store requestID in your object (however it is that you choose to get it)
   $obj->requestID = getRequestID();

   // Encode object as JSON and echo out
   $result = json_encode($obj);

   echo($result);
?>

你可能還需要設置你的頭有一個JSON /文本類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM