通过AJAX将会话变量传递给PHP文件

时间:2013-12-07 03:01:21

标签: javascript php jquery ajax session-variables

我的目标是通过ajax语句将$userId变量(包含会话变量)传递到包含回显表单的php文件中。目的是在提交表单时,可以将会话变量插入到数据库中,然后用它来识别哪些用户在哪些条目中完成。

我在将变量数据转到ajax语句时遇到了一些麻烦。我做错了什么?

<?php

session_start();

if(isset($_SESSION['userid'])) {

    $userId = mysql_real_escape_string($_SESSION['userid']);

    echo $userId;

    echo ' (irrelevant code)...

        //button that loads form via ajax...
        <a href="#" class="small button radius expand" onClick="showAdd(\'$userId\');return false;">Add URL</a>

    (irrelevant code)... ';
}

AJAX代码:

function showAdd(str)   {
     $('#response').html('Processing Request. Please wait a moment...');
       var userId = str;
       alert (userId);

       $.ajax({
           type: "POST",
           url: "addUrlForm.php",   
           data: "userId=" + str,                                        
           success: function(msg)   {
               $('#response').empty();
               $('#content01').html(msg).show();
           },
           error: function () {
               alert('error');
        }   
    });
};
编辑:我接受了你的建议(谢谢你)以及它的一些帮助。现在警报将“$ userId”变量作为字符串返回。如何将其识别为包含会话数据的变量,而不是字符串?我试过“showAdd($ userId)”,但是控制台告诉我$ userId没有定义?。

2 个答案:

答案 0 :(得分:1)

由于您要将userId作为参数发送到showAdd()函数,因此您应将代码更改为:

function showAdd(str) {
   var userId = str;
   // ...
}

或只是将参数重命名为userId

function showAdd(userId) {
    // use userId here
]

为了使您在上面的代码中发送正确的userId而不是字符串$userId,您应该将输出字符串换成双引号或直接输出:

echo '<a href="#" class="small button radius expand" onClick="showAdd('.$userId.');return false;">Add URL</a>';

或:

echo "<a href='#' class='small button radius expand' onClick='showAdd($userId);return false;'>Add URL</a>";

答案 1 :(得分:0)

我不明白为什么当$(this)已经存在并且作为函数参数传递时,你会使用userid

改变这个:

var userId = $(this).attr('userId');

要:

var userId = str;