如何从mysql获得价值,回到前端并在网址中使用

时间:2017-04-03 20:50:00

标签: javascript php jquery mysql ajax

我无法从PHP脚本获取所需的所有信息,以响应从网页发出的AJAX请求。

我有一个前端表单:

<form method="post" id="register-form">
    <input class="form-control" id="firstname" name="first name" placeholder="Fornavn" type="text" />
    <button type="submit" class="btn btn-success" name="btn-save" id="btn-submit">
        Next page &nbsp; <i class="fa fa-arrow-right"></i>  
    </button>

使用AJAX发布数据:

function submitForm(){
    $.ajax({
        type : 'POST',
        async: false, // NEW
        url  : 'register.php',
        data : $("#register-form").serialize(),
        dataType: 'json', 
        success :  function(data){
            if ( data.status==='success' ) {
                $("#btn-submit").html('<span class="fa fa-spinner fa-spin"></span> &nbsp; Saving  ...');
                $('#btn-submit').attr('disabled', 'disabled');
                $(".reg-form").fadeOut(500);
                $(".ChooseProductForm").fadeIn(500);
            }

        });
        return false;
    }

成功响应后,显示两个链接按钮:

<a href="goHome.php?userID=XX" class="btn btn-buy-now" role="button">Go home</a>
<a href="goAway.php?userID=XX" class="btn btn-buy-now" role="button">Go Away</a>

在链接href值中,XX是PHP中生成的$LastInsertedID值的占位符字符。

我的PHP文件:

<?php
$response = array();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $user_firstname         = trim_inputs($_POST['firstname']);
    $user_joining_date      = date('Y-m-d H:i:s');
    $response['status'] = 'success';
    $SaveData = "INSERT INTO Users (firstname, joined)
                VALUES ('".$user_firstname."', '".$user_joining_date."' )";

    if (mysqli_query($link, $SaveData)) {
        $LastInsertedID = mysqli_insert_id($link);
    } else {
        $response['status'] = 'error';
        //echo "Error: " . $SaveData . "<br>" . mysqli_error($link);
    }
    echo json_encode($response);
}
?>

一切都可以正常工作,但无法理解如何将$LastInsertedID值返回到这两个按钮的前端。

我知道有一个$ response的数组,但是如何获得该值。 还显示如下消息:

$response['message'] = 'Welcome user';  

我可以离开,但是如果我然后添加URL或&lt; a href ...标记到该消息中,不会显示任何内容。

感谢您阅读此问题,希望这是可以理解的,也许有人可以提供帮助: - )

提前致谢!

2 个答案:

答案 0 :(得分:1)

发回新ID:

success :  function(data)
{ 
    if ( data.status==='success' ) {
        $("#btn-submit").html('<span class="fa fa-spinner fa-spin"></span> &nbsp; Saving  ...');
        $('#btn-submit').attr('disabled', 'disabled');
        $(".reg-form").fadeOut(500);
        $(".ChooseProductForm").fadeIn(500);
        $("#id-of-go-away-button").attr("href", "goAway.php?userId=" + data.userId);
        $("#id-of-go-home-button").attr("href", "goHome.php?userId=" + data.userId);
    }
}

使用该ID:

pages_messaging_subscriptions

答案 1 :(得分:1)

对javascript的小改动。我移动代码以显示微调器,并告诉用户在ajax调用之前保存到的用户。 然后我添加了代码以从ajax调用返回的数据中获取新ID,并模拟放入字段。

Javascript代码:

function submitForm(){
    $("#btn-submit").html('<span class="fa fa-spinner fa-spin"></span> &nbsp; Saving...');
    $('#btn-submit').attr('disabled', 'disabled');
    $.ajax(
        {
            type : 'POST',
            async: false, // NEW
            url  : 'register.php',
            data : $("#register-form").serialize(),
            dataType: 'json', 
            success :  function(data) { 
                if ( data.status==='success' ) {
                    $("#btn-submit").html('Saved.');
                    $(".reg-form").fadeOut(500);
                    $(".ChooseProductForm").fadeIn(500);
                    var new_id = data.new_id;
                    $("#field to hold the new id").val(new_id);
                }
            }
        }
    );
    return false;
}

在服务器上,我们只需要将新id添加到返回给调用者的数据中。

PHP代码:

<?php
    $response = array();
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $user_firstname = trim_inputs($_POST['firstname']);
        $user_joining_date = date('Y-m-d H:i:s');
        $response['status'] = 'success';
        $response['error_message'] = "";
        $SaveData = "INSERT INTO Users (firstname, joined) VALUES ('".$user_firstname."', '".$user_joining_date."' )";

        if (mysqli_query($link, $SaveData)) {
            $LastInsertedID = mysqli_insert_id($link);
            $response['new_id'] = $LastInsertedID;
            $response['message'] = "Welcome new user!";
        } else {
            $response['status'] = 'error';
            $response['error_message'] = $SaveData . "<br>" . mysqli_error($link);
        }
        echo json_encode($response);
    }
?>