javascript - 使用 jQuery AJAX 更新 mysql 表

标签 javascript php jquery mysql ajax

我使用 jQuery AJAX 更新表格。 但是 AJAX 只在第一次有效,其他请求都消失了。

JavaScript

function uploadItems(data, step, savetype) {                                                                                                                    
            data.append('step', step);                                                                                                                                                      data.append('savetype', savetype);                                                                                                                           
            data.append('new_store_id', store_id);                                                                                                                       
                                                                                                                                                                         
            $.ajax({                                                                                                                                                     
                url: "order_store_edit.php?store_id="+store_id,                                                                                                          
                type: "POST",                                                                                                                                            
                data: data,                                                                                                                                              
                contentType: false,                                                                                                                                      
                processData: false,                                                                                                                                      
                async: true                                                                                                                                              
            })                                                                                                                                                           
            .done(function(data)                                                                                                                                         
            {                                                                                                                                                            
                console.log(data);                                                                                                                                       
            })
            .fail(function(xhr, text_status, errorThrown)                                                                                                                
            {                                                                                                                                                            
                return false;                                                                                                                                            
            });                                                                                                                                                          
}

PHP

foreach ($set_item_arr as $i => $value) {                                                                                                                            
        order_item_up($item[$i]['item_id'], $value);                                                                                                                     
        echo $item[$i]['item_id'] . ' : ' . $value['disable'] . "\n";                                                                                                    
}

数据库

function order_item_up($item_id, $set_arr)                                                                                                                                   
{                                                                                                                                                                            
    if (! isset($item_id)) {                                                                                                                                                 
        echo 'no id';                                                                                                                                                        
        return;                                                                                                                                                              
    }                                                                                                                                                                        
    global $db;                                                                                                                                                              
    $sql = 'UPDATE tablename SET ';                                                                                                                                
    foreach ($set_arr as $key => $val) {                                                                                                                                     
        $sql .= $key."='".$val."', ";                                                                                                                                        
    }                                                                                                                                                                        
    $sql = substr($sql, 0, -2);                                                                                                                                              
    $sql .= " WHERE item_id = '$item_id'";                                                                                                                                   
    return $db->execute($sql);                                                                                                                                               
}

例如,我有二十个表单,我将其中的十个附加到一个 FormData,然后调用 uploadItems。 所以它会发送两次,但更新查询只在第一次有效。

没有错误信息显示,控制台没有,浏览器没有。

这个问题的可能原因是什么?

编辑:

有没有可能是表级锁导致的?我的引擎是 MyISAM。

编辑:编辑 SQL 查询的结果

XHR finished loading: 
983 : 1 
984 : 1 
985 : 1 
986 : 1 
987 : 1 
988 : 1
989 : 1 
990 : 1 
991 : 1 
992 : 1

XHR finished loading:  
no id : 1 
no id : 1

正如我提到的,第二个 XHR 无法更新数据库。


已解决

我发现了问题......我应该使用 item_id 而不是数组的索引,因为更新数据库后数组大小会不同。

最佳答案

function order_item_up($item_id, $set_arr)                                                                                                                                   
{    
    foreach ($set_arr as $key => $val) 
    {         
        $qry1="UPDATE tablename SET". $key."='".$val."' where $item_id='".$item_id."'";
        $re=mysql_query($qry1)or die(mysql_error());
    }
}   

将此更新部分用于行数。

关于javascript - 使用 jQuery AJAX 更新 mysql 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22477500/

相关文章:

php - 创建一个 div 的图像?

javascript - jquery-ui对话框垂直居中bug

javascript - $(document).AngularJS 的现成替代方案

javascript - 如何在每个设备中正确显示相同的星号?

javascript - PHP 不向 JavaScript 发送 JSON 对象

php - 按总票数排序结果

javascript - 获取当前窗口顶部相对于文档正文的位置

javascript - 如何实现在内部范围内缓存/内存请求结果的函数

javascript - 在 for 循环中制作同步 Api

javascript - 该 Node/es6 代码的输出是什么?为什么?