2014-01-30 7 views
2

Я работаю с данными & формы файлов, сохраненные с помощью ajax. Я следил за этим сообщением uploading-both-data-and-files-in-one-form-using-ajax и работает хорошо, данные сохраняются в БД, а файл (изображение) хранится в его папке. Единственное, что я не могу сделать, это показать «успех», когда все в порядке или «ошибка», когда что-то пойдет не так ... он всегда показывает мне, что «загрузка выполнена». но он показывает, потому что я вставил это, но когда в нем есть ошибка, он не показывает мне ошибку ... всегда выполнялась «загрузка».показать данные результата ajax save

Я сделал модальное сообщение об ошибке или успеха внутри кода вставки и я поставил <?php echo $alert; ?> на странице формы, но сообщение не появляется ...

Можете ли вы помочь мне с моей проблемой?

Если можно показать загрузчик (в формате GIF) будет лучше тоже ..

Здесь показать вам код:

JS:

$("form#data").submit(function(){ 
    var formData = new FormData($(this)[0]);  
    $.ajax({ 
     url: "includes/galeria.php?ts=" + new Date().getTime(), 
     type: 'POST', 
     data: formData, 
     async: false, 
     success: function(data) { 
$('.result').html(data); 
alert('Load was performed.'); 
     }, 
     cache: false, 
     contentType: false, 
     processData: false 
    }); 
    return false; 
}); 

galeria.php:

<?php 
    require_once("connection.php"); 
    require_once("settings.php"); 
    $alert = ""; 
    if(isset($_FILES['imgaleria'])) { 
     $extension = pathinfo($_FILES['imgaleria']['name']); 
     $extension = $extension["extension"]; 
     $allowed_paths = explode(", ", $allowed_ext); 
     $valid = 0; 
     for($i = 0; $i < count($allowed_paths); $i++) { 
      if ($allowed_paths[$i] == "$extension") { 
       $valid = 1; 
      } 
     } 
     if ($valid == 1 && $_FILES["imgaleria"]["size"] <= $max_weight) { 
      if (file_exists("../assets/img/galeria/" . $_FILES["imgaleria"]["name"])) { 
       $alert = '<p class="error">' . $_FILES["imgaleria"]["name"] . ' El nombre del archivo ya existe!' . '</p>'; 
      } else { 
       move_uploaded_file($_FILES["imgaleria"]["tmp_name"], "../assets/img/galeria/" . $_FILES["imgaleria"]["name"]); 
       $save = $_FILES["imgaleria"]["name"]; 
       $statement = $conn->prepare("INSERT INTO GALERIA (imgtitulo, imgdescripcion, imgcategoria, imgaleria) VALUES (?, ?, ?, ?)"); 
       if ($statement->execute(array($_POST['imgtitulo'],$_POST['imgdescripcion'],$_POST['imgcategoria'],$save))); 
       $dbSuccess = true; 
       $alert = '<p class="ok">' . ' Oferta agregada satisfactoriamente!' . '</p>'; 
       $dbh = null; 
      } 
     } else { 
      $alert = '<p class="error">' . ' Tipo de archivo inv&aacute;lido!' . '</p>'; 
     } 
    } 
?> 

бланк страницы.php:

<form class="form-horizontal" id="data" name="data" method="post" enctype="multipart/form-data"> 
     <fieldset> 
      <?php echo $alert; ?> 
      <div class="control-group"> 
       <label class="control-label col-md-4"><?php echo $translate->__('Image title'); ?> :</label> 
       <div class="col-md-5"> 
        <input type="text" class="form-control" name="imgtitulo" /> 
       </div> 
      </div> 
      <div class="control-group"> 
       <label class="control-label col-md-4"><?php echo $translate->__('Image description'); ?> :</label> 
       <div class="col-md-5"> 
        <textarea id="maxlength_textarea" class="form-control" maxlength="225" name="imgdescripcion" /></textarea> 
       </div> 
      </div> 
      <div class="control-group"> 
       <label class="control-label col-md-4"><?php echo $translate->__('Image category'); ?> :</label> 
       <div class="col-md-5"> 
        <input type="text" class="form-control" name="imgcategoria" /> 
       </div> 
      </div>     
      <div class="control-group"> 
       <label class="control-label col-md-4"><?php echo $translate->__('File to upload'); ?> :</label> 
       <div class="col-md-3"> 
        <input name="imgaleria" type="file" /> 
       </div> 
      </div> 
      <div class="control-group"> 
       <div class="row"> 
        <div class="col-md-12"> 
         <div class="col-sd-offset-9 col-md-12"><br /> 
          <button class="btn btn-info" name="enviar"><i class="fa fa-check"></i> <?php echo $translate->__('Save'); ?></button> 
         </div> 
        </div> 
       </div> 
      </div>   
     </fieldset> 
    </form> 
    <div id="loading" style="display:none;"><img src="assets/img/ajax_loader.gif" /></div> 
+0

Где находится элемент с class = "result", который получит HTML-результат json !? $ ('Результат') HTML (данные). <- это говорит о том, чтобы установить HTML класса = "результат", но у вас нет этого элемента в вашем HTML-коде. – degenerate

+0

@degenerate mmm, поэтому мне нужно изменить ' 'to' '?? – user3236149

ответ

0

Вы недопонимаете отношения между PHP, HTML и JQuery (javascript).

PHP выполняется на сервере, прежде чем какой-либо HTML будет выводиться в браузер. Вы не можете выполнить вызов ajax после загрузки страницы и затем распечатать этот вызов с помощью PHP. Перестань так думать. Вместо этого вам нужно манипулировать HTML с помощью JQuery.

Так это JQuery код правильный:

success: function(data) { 
    $('.result').html(data); 
} 

Но вам нужен HTML-элемент на странице «результат» класс = для этой работы:

<div class="result">RESULT APPEARS HERE AFTER AJAX CALL</div> 

Вы фактически должны предназначаться ID вместо класса, поэтому я бы использовал #result вместо .result и id="result" вместо class="result". Пожалуйста, прочитайте книгу новичка о взаимодействии с PHP и Javascript, потому что вам нужно понять основы перед тем, как перейти.

+0

даже с классом или идентификатором ничего не показываю. Просто пустое всплывающее окно с моим сообщением «Загрузка выполнена». и мне действительно нужно, чтобы появилось «предупреждение» с истинным результатом .. что, если это правда, данные сохраняются или нет. – user3236149

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