更新会话变量而不刷新页面

时间:2016-09-27 09:30:19

标签: php jquery ajax

我使用模态显示表单。我想验证表单并在单击提交按钮后显示可能的错误。我不想在验证后关闭我的模态,所以我决定使用Ajax。这是我的代码:

模态:

<div class="modal fade" id="form-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
    <div class="modal-content">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
            <h4 class="modal-title" id="myModalLabel">Modal title</h4>
        </div>
        <div class="modal-body">
            <form name="offer-form" id="offer-form" action="offers.php" method="post">
                <label for="name-input">Name</label><br>
                <?php
                    if (isset($_SESSION["name-error"])) {
                        echo "<p>".$_SESSION["name-error"]."</p>";
                        unset($_SESSION['name-error']);
                    } 
                ?>
                <input type="text" id="name-input" name="name"><br>

                <input type="submit" id="submit-input" name="submit" value="Submit">
            </form>
        </div>
        <div class="modal-footer">
            <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            <button type="button" class="btn btn-primary">Save changes</button>
        </div>
    </div>
</div>

脚本:

<script type="text/javascript">
$(document).ready(function(){
    $("#offer-form").submit(function(e){    
        e.preventDefault();
        $.ajax({
            type : 'POST',
            data: $("#offer-form").serialize(),
            url : 'validate.php',
            success : function(data){

            }
        });
        return false;
    });
})

PHP:

<?php
session_start();

$_SESSION["name-error"] = "Error";
?>

问题是我必须刷新网站才能看到显示的错误。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

将会话的值返回给你的ajax并使用jquery将错误追加到页面:

将以下内容添加到您的成功函数

success : function(data){
        $('label[for="name-input"]').html('</br>'+data.message)
            }

在你的php中

<?php
session_start();
header('Content-Type: application/json');
$_SESSION["name-error"] = "Error";
echo json_encode(["message"=>$_SESSION["name-error"]]);
?

答案 1 :(得分:0)

使用JQUERY显示错误...如果您希望PHP处理$ _SESSION,您需要重新加载页面(因为PHP在服务器端)。

在PHP文件中执行回显并捕获成功函数中的数据

@Override
public void bindView(View view, Context context, Cursor cursor) {
    // Gets handles to individual view resources
    final ViewHolder holder = (ViewHolder) view.getTag();           
    Contact contact = new ContactDatabase(context).getContact(cursor, "_id");
    String body = cursor.getString(cursor.getColumnIndexOrThrow("follower"));
    Log.d("Body", "" + body);
    if (body == null) {
        holder.rowlayout.setVisibility(View.GONE)
    } else {
        holder.rowlayout.setVisibility(View.VISIBLE);
        holder.text1.setText(contact .getName()); 
    }
}

答案 2 :(得分:0)

您的validation.php文件

  session_start();
  $_SESSION["name-error"] = "Error";

  $error = array('error' => $_SESSION["name-error"]);
  echo json_encode($error);

你的Html

 <label for="name-input">Name</label><br>
            <p class='sessionError'></p>

你的ajax成功功能

        success : function(data){
         $('.sessionError').text(data.error);
            }