使用AJAX处理时未传递PHP会话变量

时间:2013-12-01 23:24:43

标签: php jquery ajax session variables

我正在编写一个脚本,根据所选值回显答案。这将是后来的多个值,但现在我只是测试。 php脚本通过AJAX调用,因此结果将显示在同一页面上。

唯一的问题是我的变量$ brand在这种情况下没有被传递,因此脚本将始终返回我的else语句。我已经将变量包含在回声中以检查它是否通过,但事实并非如此。这里出了什么问题?

这是我的索引文件代码:

<?php
session_start();
?>
<html>
<head>
<title>Test</title>
<link rel="stylesheet" type="text/css" href="css/style.css" />
<script type="text/javascript" src="JS/jquery-1.10.2.js" ></script>
<script>
        function myCall(){
            var request = $.ajax({
                url: "process.php",
                type: "post",
                dataType: "html"
            });

            request.done(function(msg) {
                $("#response").html(msg);
            });

            request.fail(function(jqXHR, textStatus) {
                alert( "Request failed: " + textStatus );
            });
        }
</script>
</head>

<body>
<div id="formulier">
<form method="" action="" name="form" id="form">
    <label for="brand">Brand</label>
    <select id="brand" name="brand">
        <option value="" >- Select -</option>
        <option value="1">Marlboro (1)</option>
        <option value="2">Pall Mall (2)</option>
    </select>

    <input type="button" value="submit" onclick="myCall();">
</form>
</div>

<div id="response">
</div>

这是我的php文件(process.php):

<?php
session_start();

$brand = $_POST['brand'];

if( $brand == '1'){
    echo "Value is 1";
}

else{
    echo "Value is: ".$brand;
}
?>

4 个答案:

答案 0 :(得分:0)

您应该使用json_encodehttp://us1.php.net/json_encode)在process.php中进行回复。

答案 1 :(得分:0)

确保您设置session variable并稍后阅读(在您的php else块中),例如, $_SESSION["brand"] = "2";

答案 2 :(得分:0)

我在你的脚本中看到了几个问题:

  • 您没有参考表单的实际字段
  • 我宁愿把处理程序放在ajax调用

试试这个:

    function myCall(){
        var request = $.ajax({
            url: "process.php",
            type: "post",
            dataType: "html",
            data: $('#form').serialize(), //here you send the form fields
            success: function(msg) {
                $("#response").html(msg);
            }, 
            error: function(jqXHR, textStatus) {
                alert("Request failed: " + textStatus);
            }
         }
    }

答案 3 :(得分:0)

您应该尝试定义表单属性

<form method="POST" action="" name="form" id="form">