PHP从Jquery .serialize中丢失数据

时间:2014-11-21 10:58:13

标签: php jquery ajax

我尝试使用ajax将多个选择框的值发送到邮件/检查脚本 但是当变量到达php脚本时,数组丢失了它的第一条记录,我无法找到

jQuery(function() {
    var paraTag = jQuery('input#submit').parent('div');
    jQuery(paraTag).children('input').remove();
    jQuery(paraTag).append('<input type="button" name="submit" id="submit" class="btn btn-default btn-lg" value="Verstuur" />');

jQuery('#contact-form input#submit').click(function() {
    jQuery('#contact-form').append('<img src="images/loading.gif" class="loaderIcon" style="width:100px; margin:-20px;" alt="Loading..." />');

    var name = jQuery('input#name').val();
    var adres = jQuery('input#adres').val();
    var woonplaats = jQuery('input#woonplaats').val();
    var email = jQuery('input#email').val();
    var postcode = jQuery('input#postcode').val();
    var bedrijf = jQuery('input#bedrijf').val();
    var comments = jQuery('textarea#comments').val();
    var tel = jQuery('input#tel2').val();
    var hidden = jQuery('input#hidden2').val();         
    var over_select =  jQuery('#over').serialize();


    console.log(over_select);
    jQuery.ajax({
        type: 'post',
        url: 'sendEmail.php',
        data: 'hidden=' + hidden + '&over=' + over_select + '&post=' + postcode + '&plaats=' + woonplaats + '&adres=' + adres +'&name=' + name + '&email=' + email + '&tel=' + tel + '&bedrijf=' + bedrijf + '&comments=' + comments,

        success: function(results) {
            jQuery('#contact-form img.loaderIcon').fadeOut(1000);
            jQuery('#response').html(results);
        }
    }); // end ajax
});

在邮件脚本中我放了&#34; over&#34;在一个php变量中,当我print_r()它时,它失去了它的第一个选择 你能帮帮我吗?

2 个答案:

答案 0 :(得分:0)

尝试像这样发送您的数据

 jQuery.ajax({
        type: 'post',
        url: 'sendEmail.php',
        data : {'hidden': hidden, 'over': over_select, 'post': postcode, 'plaats': woonplaats, 'adres': adres,'name':name,'email': email, 'tel': tel, 'bedrijf':bedrijf, 'comments': comments},
        success: function(results) {
            jQuery('#contact-form img.loaderIcon').fadeOut(1000);
            jQuery('#response').html(results);
        }
    }); // end ajax

然后在php部分使用

url_decode($_POST['over_select']);

答案 1 :(得分:0)

如果在多重选择上运行.serialize(),它将返回如下内容:

  

在[] = VAL1&安培;在[] = VAL2

您的数据字符串将变为:

  

在以上[] = = VAL1&安培;在[] = VAL2

这可能是你的问题。尝试删除数据字符串中的“over =”。