0
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"));
4

1 回答 1

0

直接来自文档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,它将像上面的示例一样返回。

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/text 类型。

于 2012-11-01T21:53:38.907 回答