2016-05-13 2 views
0

Я следую за тем, что this post упоминается для загрузки файла. Небольшая разница заключается в том, что я добавил еще одно поле ввода текста в форму. Файл изображения загружается на сервер успешно, но кажется, что значение в поле ввода не передается PHP для обновления базы данных. Функция базы данных запущена и добавлена ​​запись базы данных, но отсутствует значение из формы.PHP не способен получить значение POST от AJAX

Может ли кто-нибудь указать мне, что я пропустил? Благодарю.

$.validate({ 
 
    form: '#frmSlide', 
 
    modules: 'file, html5', 
 
    validateOnBlur: false, 
 
    errorMessagePosition: 'top', // Instead of 'element' which is default 
 
    scrollToTopOnError: false, // Set this property to true if you have a long form 
 
    onSuccess: function($form) { 
 
    var file_data = $('#a_imgfile').prop('files')[0]; 
 
    var form_data = new FormData(); 
 
    form_data.append('file', file_data); 
 
    $.ajax({ 
 
     url: 'slide_upd.php', // point to server-side PHP script 
 
     dataType: 'text', // what to expect back from the PHP script, if anything 
 
     cache: false, 
 
     contentType: false, 
 
     processData: false, 
 
     data: form_data, 
 
     type: 'post', 
 
     success: function(data) { 
 
     alert(data); 
 
     } 
 
    }); 
 
    } 
 
});
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data" class="form-horizontal" id="frmSlide"> 
 
    <div class="form-group"> 
 
    <label class="col-sm-4 control-label" for="imgfile">Image file</label> 
 
    <div class="col-sm-8"> 
 
     <input type="file" id="a_imgfile" data-validation="required mime size" data-validation-allowing="jpg, png, gif" data-validation-ratio="1:1" data-validation-max-size="1M" data-validation-error-msg="An image file is mandatory." /> 
 
    </div> 
 
    </div> 
 
    <div class="form-group"> 
 
    <div class="col-sm-8 col-md-offset-4" id="image-holder"> 
 
    </div> 
 
    </div> 
 
    <div class="form-group"> 
 
    <label class="col-sm-4 control-label" for="seq">Sequence</label> 
 
    <div class="col-sm-8"> 
 
     <input class="form-control server" name="a_seq" id="a_seq" type="number" min="1" max="4" value="" placeholder="Enter display sequence of this slide" data-validation-error-msg="Only 1 to 4 is allowed." /> 
 
    </div> 
 
    </div> 
 
    <div class="form-group"> 
 
    <div class="col-sm-offset-4 col-sm-8"> 
 
     <button name="btnUpd" id="btnUpd" type="submit" class="clsUpd btn btn-primary"><i class="fa fa-floppy-o"></i>&nbsp;Update</button> 
 
    </div> 
 
    </div> 
 

 
</form>

<?php 
 
\t $image_name = $_FILES['file']['name']; 
 
\t $image_size = $_FILES['file']['size']; 
 
\t $image_temp = $_FILES['file']['tmp_name']; 
 
\t 
 
\t move_uploaded_file($image_temp, 'img/'.$image_name); 
 

 
\t $seq = $_POST['a_seq']; 
 
\t addSlide($seq); 
 
?>
function addSlide($seq) { 
 
\t $seq = (int)$seq; 
 
\t mysql_query("INSERT INTO slide (seq, lastchgat) 
 
\t \t VALUES ('$seq', now())") or die(mysql_error()); 
 
}

+1

, которого не добавить любое значение в FormData для 'a_seq' – guradio

+0

Можете ли вы показать мне, как добавить другие поля на форме? Благодарю. –

+0

'вар a_seq = $ ('# a_seq') Вал();.' ' form_data.append ('a_seq', a_seq);' Есть что-то вроде этого – guradio

ответ

1
  1. a_seq не прилагается к form_data.
  2. добавить var a_seq = $('#a_seq').val();
  3. form_data.append ('a_seq', a_seq);
  4. Должно быть хорошо идти
0

Я думаю, что это будет исправить вашу проблему

$.validate({ 
    form: '#frmSlide', 
    modules: 'file, html5', 
    validateOnBlur: false, 
    errorMessagePosition: 'top', // Instead of 'element' which is default 
    scrollToTopOnError: false, // Set this property to true if you have a long form 
    onSuccess: function($form) { 
    //var file_data = $('#a_imgfile').prop('files')[0]; 
    //var form_data = new FormData(); 
    //form_data.append('file', file_data); 
    //------ instead of three lines i just did this and works fine for me ------- 
    var formData=new FormData($('#frmSlide')[0]); 
    $.ajax({ 
     url: 'slide_upd.php', // point to server-side PHP script 
     cache: false, 
     contentType: false, 
     processData: false, 
     data: formData, 
     type: 'post', 
     success: function(data) { 
     alert(data); 
     } 
    }); 
    } 
}); 
+0

К сожалению, даже файл теперь не загружен. –

Смежные вопросы