2013-04-08 69 views
0

如果我单击提交按钮只使用PHP,数据记录在MySQL中。使用ajax插入HTML输入。代码有问题

通过ajax _autosave.php只更新的作品。插入不起作用。要疯了....无法理解

Ajax代码在first.php

<script type="text/javascript"> 
$(document).ready(function() { 
setInterval(function(){ 
var date_day1=$("#date_day1").val(); 
var amount1=$("#amount1").val(); 
DATA = 'date_day1=' + date_day1 + '&amount1=' + amount1; 
$.ajax({ 
type: "POST", 
url: "_autosave.php", 
data: DATA, 
cache: false, 
/*success: function(){ 
$(".done").show().html("Saved as a draft!"); 
}*/ 
}); 
setTimeout(function(){ 
$(".done").hide(); 
}, 1000);// 15 seconds 
}, 3000);// 1 minute 
}); 
</script> 

HTML输入

<td><input type="text" name="date_day1" id="date_day1" value="<?php echo $_POST['date_day1']?>" size="1"></td> 
<td><input type="text" name="amount1" id="amount1" value="<?php echo $_POST['amount1']?>" size="5"></td> 

的PHP代码部分是在first.php和_autosave.php相同

$date_day1 = $_POST['date_day1']; 
$amount1 = $_POST['amount1']; 

if ($stmt = mysqli_prepare($mysqli, "SELECT RecordDay FROM 2_1_journal WHERE RecordDay = ? ")) { 
$stmt->bind_param('s', $date_day1); 
$stmt->execute(); 
$stmt->store_result(); 
$stmt->bind_result($RecordDay); 
$stmt->fetch(); 
//echo $RecordDay .' $RecordDay<br>'; 
} 

if ($RecordDay == $date_day1) { 
if ($stmt = mysqli_prepare($mysqli, "UPDATE 2_1_journal SET Amount = ? WHERE RecordDay = ? ")) { 
$stmt->bind_param('ds', $amount1 , $date_day1); 
$stmt->execute(); 
/*echo $date_day1 .' date_day1<br>'; 
echo $amount1 .' amount1<br>';*/ 
}  
} 
else { 
if ($stmt = mysqli_prepare($mysqli, "insert into 2_1_journal 
(RecordDay, Amount, DebitAccount, CreditAccount) 
values(?,?,?,?)")) { 
$stmt->bind_param('sdss', $date_day1, $amount1, $debit1, $credit1); 
$stmt->execute(); //execute above insertion 
} 
} 

更新在两个文件中都起作用(从两个文件中调用)。只有在没有Ajax的情况下调用才能插入作品。哪里不对?

更新 终于发现有什么问题了。如果$ _POST没有设置(不发送),mysql中不会记录任何内容。但是执行后没有错误信息。只需要记住这里的所有变量$ stmt-> bind_param('sdss',$ date_day1,$ amount1,$ debit1,$ credit1);必须存在。

回答

0

data语法可能是这个原因,请使用以下格式:

data: { key1: "value1", key2: "value2" } 

看到从这个例子:http://api.jquery.com/jQuery.ajax/

$.ajax({ 
type: "POST", 
url: "some.php", 
data: { name: "John", location: "Boston" } 
}) 

所以,你的情况下可以尝试:

$.ajax({ 
type: "POST", 
url: "_autosave.php", 
data: {date_day1:$("#date_day1").val(), amount1: $("#amount1").val()}, 
cache: false, 
}); 
+0

感谢您的回答,但结果相同。更新作品,插入不起作用......疯狂的东西... – user2232696 2013-04-08 21:44:50

0

在插入你绑定5参数而不是4