【问题标题】:Insert HTML input using ajax. Something wrong with code使用 ajax 插入 HTML 输入。代码有问题
【发布时间】:2013-03-31 03:15:51
【问题描述】:

如果我只使用php点击提交按钮,数据会记录在mysql中。

通过 ajax _autosave.php 仅更新有效。插入不起作用。快疯了……看不懂

first.php中的ajax代码

<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>

first.php和_autosave.php中相同的部分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 的情况下调用 Insert 才有效。怎么了?

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

【问题讨论】:

    标签: php ajax mysqli


    【解决方案1】:

    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,
    });
    

    【讨论】:

    • 感谢您的回答,但结果相同。更新有效,插入无效……有些疯狂……
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-08-13
      • 2016-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-16
      • 1970-01-01
      相关资源
      最近更新 更多