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);
});

data関数のコールバックに送り返されるte​​st.phpの出力です。$.postしたがって、サーバー側の更新を行っている PHP ファイル *scripts_for_profile/request_as_friend.php* で、リクエスト ID をエコーアウトすると、上記の例のように返されます。

PHP でのもう 1 つの方法は、オブジェクトを作成し、それを 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 に答える