好吧,在我的添加联系表单中,我使用Jquery和Php将数据插入Mysql数据库。它已成功将数据插入db。现在我要将成功的页面重定向到 index.php?cdid = $ last_id 。但是如何在jquery成功方法中获得 $ last_id?我只能显示成功的消息。任何帮助?
Jquery代码:
<script>
$('#addcontact').submit(function(event) {
event.preventDefault();
$.ajax({
type: 'POST',
url: 'add_contact_process.php',
data: $(this).serialize(),
dataType: 'json',
success: function (data) {
$('#success').html('');
$.each( data, function( key, value ) {
if(key !== 'error') {
$('#success').append('<p>'+value+'</p>');
}
});
if( ! data.error) {
$('#hide').hide();
setTimeout(function () {
$('input[type=submit]').attr('disabled', false);
window.location.href = "../index.php";
//window.location.href = "../index.php?redcdid=<?php echo $cdid; ?>";
// need something like above
}, 5000);
}
}
});
});
</script>
Php代码:
<?php
ob_start();
@session_start();
require_once("../config.php");
$company_name = ucfirst($_POST['company_name']);
$family_name = ucfirst($_POST['family_name']);
$msg = array();
$msg['error'] = false;
if(empty($company_name)){
$msg[] = "<font color='red'>Company name required. </font>";
$msg['error'] = true;
}
if(empty($family_name)){
$msg[] = "<font color='red'>Family name required. </font>";
$msg['error'] = true;
}
if($msg['error'] === false){
$query_2 = "INSERT INTO contact_details (cdid, family_name, given_name, work_phone, mobile_phone, email, email_private, user_id, created_date, cid) VALUES('', '$family_name', '$given_name', '$work_phone', '$mobile_phone', '$email', '$email_private', '$user_id', '$date', '$cid')";
$query_2 = mysql_query($query_2);
$last_id = mysql_insert_id();
if($query_2){
$msg[] = '<font color="green"><strong>Successfully added a new contact</strong>. </font>';
$another = "close";
}
else{
$msg[] = '<font color="red">Sorry we can not add a new contact details. </font>';
$msg[] .= mysql_error();
$another = "close";
}
}
echo json_encode($msg);
?>
更新:
我将以下代码用于Php apge:
if($query_2){
$msg[] = '<font color="green"><strong>Successfully added a new contact</strong>.
</font>';
$msg['last_id'] = $last_id;
}
我正在使用以下jquery代码:
if( ! data.error) {
$('#hide').hide();
setTimeout(function () {
$('input[type=submit]').attr('disabled', false);
var last_id = data.last_id;
window.location.href = "../index.php?redcdid=last_id";
}, 5000);
}
答案 0 :(得分:0)
然后在你的回复上传递一个嵌套数组:
$data['msg'] = $msg;
$data['last_insert_id'] = $last_id;
echo json_encode($data);
然后在JS中,你需要将它们调整为:
success: function (response) {
// ^ now this will hold both the messages and the last insert id
var data = response.msg; // separate them, messages does in data
var last_id = response.last_insert_id; // last_id has the last insert id
},
答案 1 :(得分:0)
使用mysql_insert_id()
,您将能够获得最后一个ID。
$last_id = mysql_insert_id();
然后在您的PHP代码中,在成功消息后立即执行以下操作。
$data['msg'] = 'your message';
$data['last_id'] = $last_id;
echo json_encode($data);
然后执行以下操作以获取ajax的响应
success: function (output) {
var data = output.msg; // this is message
var last_id = output.last_id; // this is the id
},
将您的javascript更改为以下内容:
<script>
$('#addcontact').submit(function(event) {
event.preventDefault();
$.ajax({
type: 'POST',
url: 'add_contact_process.php',
data: $(this).serialize(),
dataType: 'json',
success: function (data) {
$('#success').html('');
$.each( data, function( key, value ) {
if(key !== 'error') {
$('#success').append('<p>'+value+'</p>');
}
});
if( ! data.error) {
$('#hide').hide();
setTimeout(function () {
$('input[type=submit]').attr('disabled', false);
window.location.href = "../index.php";
//window.location.href = "../index.php?redcdid=<?php echo $cdid; ?>";
// need something like above
}, 5000);
}
}
});
});
</script>
要
<script>
$('#addcontact').submit(function(event) {
event.preventDefault();
$.ajax({
type: 'POST',
url: 'add_contact_process.php',
data: $(this).serialize(),
dataType: 'json',
success: function(output) {
//alert(output);
var result = jQuery.parseJSON(output);
alert(result.last_id); //this will give the last id
alert(result.msg); //this will give the message
},
error: function(output) {
alert("not working whole process");
}
});
});
</script>
答案 2 :(得分:0)
您可以获取最后一个插入ID
mysql_insert_id()....
bt而不是这个,你应该使用
pdo ......这很简单也很好......
http://php.net/manual/en/book.pdo.php
在pdo中你可以通过..执行你的查询。
在配置文件中创建pdo实例..
<?php
/* Connect to an ODBC database using driver invocation */
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
?>
您可以通过...
获取数据$sth = $dbh->prepare('SELECT name, colour, calories FROM fruit
WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories);
$sth->bindParam(':colour', $colour);
$sth->execute();
you can get last insert id by
$dbh->lastInsertId();
pdo简单而安全.....