我无法从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 <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> 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 ...标记到该消息中,不会显示任何内容。
感谢您阅读此问题,希望这是可以理解的,也许有人可以提供帮助: - )
提前致谢!
答案 0 :(得分:1)
发回新ID:
success : function(data)
{
if ( data.status==='success' ) {
$("#btn-submit").html('<span class="fa fa-spinner fa-spin"></span> 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> 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);
}
?>