使用ajax提交帖子数据只能调用一次

时间:2017-08-01 07:27:51

标签: php jquery ajax

我对此代码有疑问:

function sendData(nr) {
    var data = $("#myform"+ nr).serialize();

    // debug regeltje
    console.log(data);

    jQuery.ajax({
        url: "inc/update.php",
        data: data,
        type: "POST",
        cache: false,
        success:function(data)
        {
            if(data=='success') {
                $("#container").load(window.location + " #container");
            //  alert(data);
            } else {
                $("#container").load(window.location + " #container");
            }
        }
    });
}

我第一次调用此函数时它工作正常。 但第二次它不是。 调试控制台没有结果。

这是我的update.php文件

<?php
session_start();
include("config.php");
include("function.php");
include("class.User.php");
$Func = new Func($db);
if(isset($_SESSION['userData'])) {
    $User = new GUser($db,$Func, $_SESSION['userData']['oauth_uid']);
}

//echo var_dump($_POST);
if(isset($_POST['color'])) {
    $query = $db->query('UPDATE user_fleet SET train_row_color = "'.$db->real_escape_string($_POST['color']).'" WHERE id = "'.$db->real_escape_string($_POST['id']).'"');
}

刷新完整页后,它再次正常工作一次。

为什么会这样?

我从sendData

致电fleet.php
<tr style="background-color: #'.$res['train_row_color'].';">
            <form method="post" action="" id="myform'.++$i.'">
            <td>
                <select class="test" name="color" onchange="sendData('.$i.');">
                    <option value="0"></option>
                    <option value="ff0000" style="background-color: #ff0000"></option>
                    <option value="3000ff" style="background-color: #3000ff"></option>
                    <option value="36ff00" style="background-color: #36ff00"></option>
                    <option value="e400ff" style="background-color: #e400ff"></option>
                    <option value="fff000" style="background-color: #fff000"></option>
                </select>
            </td>

这是在while循环中。

真正的Google Inspect和网络我看到了这个

enter image description here

enter image description here

如您所见,第二个屏幕未显示表格。

1 个答案:

答案 0 :(得分:0)

从HTML标记中删除调用函数

            <select id="yourID" class="test" name="color">

使用javascript进行函数调用

$("#yourID").on('change',function(){
sendData($(this).val();
});