2012-11-01 47 views
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(); 
}); 
} 

这是向朋友发送好友请求的功能,当发送请求时,“添加为好友”选项更改为“取消请求”。ajax调用ajax调用后,从数据库获取php变量的值

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代码是不是在一个地方,而是散落在页面各处。我的问题是,代码首先正常工作。就像用户点击“Add as friend”一样,它会询问他们“真的”还是“取消”。然后,如果用户单击“真正”,则“添加为朋友”更改为“取消请求”,并向用户发送请求。然后,如果用户在没有页面刷新的情况下单击“取消请求”,那么它也可以正常工作并询问“真正”或“取消”,如果用户点击“真正”,则请求被取消,但是如果他点击“取消”未取消。

所以基本上问题是,如果发送请求并且页面没有刷新,那么请求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")); 

回答

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

+0

好吧,我将rqstid作为$ rqst回应,因此如何在脚本中使用它而不回显该值。我只想使用该值并将其存储在一个php变量中。 –

+0

如果你试图保留变量服务器端(我以为你想在你的Javascript中使用它),那么为什么不直接从数据库中抓取它呢? –

+0

不,但我想使用ajax调用获取该值,然后在php脚本中使用它 –