首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用带有ajax的POST方法使用多个数组将数据插入数据库:

如何使用带有ajax的POST方法使用多个数组将数据插入数据库:
EN

Stack Overflow用户
提问于 2015-02-28 13:44:01
回答 2查看 1.4K关注 0票数 0

我在这个问题中读到了类似的答案:POST arraysPOST arrays,但问题是这些答案在我的代码中不起作用。是因为我使用了ajax吗?我只得到第一个数组的值。

如果我也将变量声明放在for循环中,那么它也不起作用。

这里是我的ajax:

代码语言:javascript
复制
var name = []; 
$('input[name="name[]"]').map(function(){ name.push($(this).val()); }); var studid = []; 
$('input[name="studid[]"]').map(function(){ studid.push($(this).val()); }); var nameStr = name != '' ? '&name='+ name : '';
var studStr = studid != '' ? '&studid='+ studid : '';
var dataString = 'subject='+ subject + '&section=' + section + studStr + nameStr;

$.ajax({ type: "POST", url: 'save.php', data: dataString, dataType: "html", 
success: function(data) {
    $('input#subject-field').val('');
    $('input#section-field').val('');
    $('input.record-input-forms').val('');
    $('#status-message').css({"color":"#39b1c6"});
    $('#status-message').html('Save successfully',function(){
    $('#status-message').fadeOut(2000); }); }, 
error:function (xhr, ajaxOptions, thrownError){
    alert(thrownError); } });
    return false;
}); 

以下是我的php:

代码语言:javascript
复制
if(isset($_POST['studid']) || isset($_POST['name'])){
    $studid = array_map(mysql_real_escape_string, explode(",",$_POST['studid']));
    $name = array_map(mysql_real_escape_string, explode(",",$_POST['name']));   

    for ($i=0; $i<count($studid); $i++){
        $sql_1 = "INSERT INTO tbl_student(StudentID, StudentName, SubjectID)  VALUES ('".$studid[$i]."', '".$name[$i]."', LAST_INSERT_ID())"; 
        mysqli_query($con,$sql_1);  
    } 
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-28 13:58:44

使用mysql_insert_id();而不是LAST_INSERT_ID()

票数 1
EN

Stack Overflow用户

发布于 2015-02-28 14:16:17

您没有从jQuery正确地发送数据,而且它似乎将数组和字符串混合在一起。

这是一个简单的请求,它从jQuery中发布studid数组。

代码语言:javascript
复制
var saveData = $.ajax({
                    type: 'POST',
                    data: {studid: studid},
                    url: 'save.php',
                    dataType: 'html'
                });

saveData.done(function(data) {                                                   
    $('input#subject-field').val('');
    $('input#section-field').val('');
    $('input.record-input-forms').val('');
    $('#status-message').css({"color":"#39b1c6"});
    $('#status-message').html('Save successfully',function(){
    $('#status-message').fadeOut(2000); });

});                        

saveData.fail(function(ts) {
    alert(ts.responseText);
});

调用save.php时,将设置$_POST['studid'] (如果数组中有任何内容)

如果你这样做的话:

代码语言:javascript
复制
var saveData = $.ajax({
                        type: 'POST',
                        url: 'save.php?studid=' + studid,
                        dataType: 'html'
                    });

当调用save.php时,将设置$_GET['studid'] (如果数组中有任何内容)。不过,最好的方法是在ajax函数调用中使用数据选项(在我的第一个例子中)。如果选择使用此选项,则必须先序列化stuid-数组,然后将其作为url的一部分放入其中。

如果要传递多个数组,则必须执行以下操作:UPDATE

代码语言:javascript
复制
var saveData = $.ajax({
                        type: 'POST',
                        data: {studid: studid, name_arr2: data_arr2},
                        url: 'save.php',
                        dataType: 'html'
                    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28782388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档