0

私は何時間も探していました。javascriptがクライアント側で、phpがサーバー側であり、通信するために使用する必要があるPOSTかどうかを知っています。

私は最初にこのコードをjavascriptで作成して、必要な値を取得し、jqueryを使用してphpに送信しました。

function getGroupName(test){

    var groupName = ($(test).parent().attr('id'));           

    $.post("setGroup.php",{ groupName:groupName } ,function(data) {

        if(data == 'yes'){          
            <?php   
                $testing = $_SESSION['currentGroup'];       
                $tsql2 = "select emailName,email from privacyEmails where tagID = '$tagid' and userEmail = '$testmail' and circleName = '$testing'";  

                $stmt2 = sqlsrv_query( $conn, $tsql2);  

                $order = 0;
                $emailNameT = "";
                $NameT = "";

                while( $row = sqlsrv_fetch_array( $stmt2,   SQLSRV_FETCH_NUMERIC))  
                {
                    $emailNameT = $row[0];
                    $NameT = $row[1];
            ?>
            makeEditPeople('<?php echo $NameT ?>','<?php echo $emailNameT ?>','<?php echo $order ?>');
            <?php
                $order = $order +1;
                }
            ?>
        }    
    });
}

これは、 :を取得するためのphpコード(setGroup.php)です。$testing

<?php
    include "connectionString.php";

    session_start();

    $groupName = $_POST['groupName'];

    $_SESSION['currentGroup'] = $groupName;

    echo "yes";    
?>

makeEditPeople()jsのinは、パラメータで受け取ったユーザーを適切に機能するテーブルに追加するメソッドであることに注意してください 。

私の問題は次のとおりです。javascript値(groupName)をSESSIONphpからjquery$Postの値に送信し、同時にページを更新せずに取得したい。それは可能ですか?

4

3 に答える 3

0

あなたが探しているのは AJAX と呼ばれるものです。これは、ブラウザを更新せずにサーバーにリクエストを送信できる JavaScript の「機能」です。

jQuery を使用しているため、これ以上簡単なことはありません。

$.post (
  'http://example.com/your.php', // URL of your script
  {
    Param1: 'value',
    Param2: 123
  },
  function ( response ) {
    // request holds whatever the server returned
  }
);

詳細については、http: //api.jquery.com/jQuery.post/を参照してください。

于 2012-09-13T06:23:53.507 に答える
0

リンクをクリックして AJAX アクションをアクティブにした後にページを更新する場合、これは次の 2 つのいずれかを意味します。

  1. JavaScriptにエラーがあります(リンクがたどられてしまいます)
  2. ページを更新しないように JavaScript に指示していません。

おそらく "onclick" または (jQuery を "正しく" 使用している場合)、$("#id").click( function(e) {} ) handler* があります。これらの「return false;」を確認してください。最後に

<a href="#" onclick="RunSomeFunction();">Click</a>

function RunSomeFunction() {
    // Do Stuff
    return false
}

または、jQuery を使用して

<a href="#" id="RunMyFunction">Click</a>

$("#RunMyFunction").click( function(e) {
   e.preventDefault();
   // Do Stuff
   return false;
)}

ノート:

  1. click() だけでなく、他のバインド関数も使用できます。でもクリックした方が読みやすい
  2. e.preventDefault で十分です。それは必要なく、false を返します。2つのオプションを提供するだけです。
于 2012-09-13T06:24:38.717 に答える
0

問題は、「if (data == 'yes')」Javascript コマンドでは、インライン PHP が実行されるかどうかを制御できないことです。それはすべて一緒に別の言語であるため、そこにあるコンテンツは関係なく実行されます。

より良い解決策は、setGroup.php「yes」だけを返すのではなく、値を設定して返すように変更することです。

<?php
include "connectionString.php";

session_start();

if (isset($_POST['groupName']))
  $_SESSION['currentGroup'] = $_POST['groupName'];

echo $_SESSION['currentGroup'];
?>

setGroup.php設定なしでPOST するとgroupName、セッションは更新されませんが、現在の値が返されます ( datajavascript 関数内)。設定すると、新しい値が Javascript に返されます。

于 2012-09-13T06:33:48.637 に答える