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 中的 是一种将参数中收到的用户附加到运行良好的表中的方法。

我的问题是:我想通过jquery将 javascript 值( groupName)发送到php 中的值,然后同时,我想在不刷新页面的情况下检索它。那可能吗?SESSION$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 操作后刷新页面,则这意味着以下两种情况之一:

  1. 您在 javascript 中有错误(因此链接最终被关注)
  2. 您还没有告诉 javascript 不刷新页面。

您可能拥有“onclick”或(如果“正确”使用 jQuery),那么您拥有 $("#id").click(function(e) {}) 处理程序*。确保这些“返回 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;只是给你两个选择。
于 2012-09-13T06:24:38.717 回答
0

问题是您的“if (data == 'yes')”Javascript 命令无法控制是否执行内联 PHP;无论如何,那里的内容都会运行,因为它是另一种语言。

更好的解决方案是修改setGroup.php为不只返回“是”,而是设置并返回值:

<?php
include "connectionString.php";

session_start();

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

echo $_SESSION['currentGroup'];
?>

现在,如果您 POSTsetGroup.php没有groupName设置,它不会更新会话,但会返回当前值(data在 javascript 函数中)。如果您确实设置了它,它会将新值返回给 Javascript。

于 2012-09-13T06:33:48.637 回答