2013-03-26 6 views
1

Я пытаюсь автоматически реагировать на Bootstrap автоматически после обновления страницы, чтобы показать сообщение с обратной связью, однако мой текущий код не перезагружает модальный файл и не показывает сообщения об ошибках. Сама страница перезагружается, а данные, отправленные в форму, корректно обновляются в базе данных (или не отправляются, в зависимости от ошибки или нет!), Но модальность не будет открываться повторно после обновления страницы.Активировать Bootstrap автоматически после обновления страницы

Мой текущий код ниже:

//Clean 
$submit = clean_string($_POST['submit']); 

$id = $profile_info['id']; 
$db_password = $profile_info['password']; 


//Update account details 
if ($submit == 'Save changes') { 
    $first_name = clean_string($_POST['first-name']); 
    $last_name = clean_string($_POST['last-name']); 
    $email = clean_string($_POST['email']); 
    $current_password = clean_string($_POST['current-password']); 
    $new_password = clean_string($_POST['new-password']); 
    $confirm_new_password = clean_string($_POST['confirm-new-password']); 

    //Output variables 
    $updateProfile_bad_message = ''; 
    $updateProfile_good_message = ''; 

    if ($db_server) { 
     if (!empty($first_name)) { 
      if ($first_name = clean_string($first_name)) { 
       $query = "UPDATE users SET first_name = '$first_name' WHERE id = '$id'"; 
       mysql_query($query) or die("Insert failed. " . mysql_error() . "<br />" . $query); 
       $updateProfile_good_message = '<div class="alert alert-success">Changes saved</div>'; 
      } else { 
       $updateProfile_bad_message = '<div class="alert alert-error">Sorry, something\'s gone wrong! Please try again later.</div>';?> 
       <script type="text/javascript"> 
        $('a.account-update').trigger('click'); 
       </script><?php 
      } 
     } 
     if (!empty($last_name)) { 
      if ($last_name = clean_string($last_name)) { 
       $query = "UPDATE users SET last_name = '$last_name' WHERE id = '$id'"; 
       mysql_query($query) or die("Insert failed. " . mysql_error() . "<br />" . $query); 
       $updateProfile_good_message = '<div class="alert alert-success">Changes saved</div>'; 
      } else { 
       $updateProfile_bad_message = '<div class="alert alert-error">Sorry, something\'s gone wrong! Please try again later.</div>';?> 
       <script type="text/javascript"> 
        $('a.account-update').trigger('click'); 
       </script><?php 
      } 
     } 
     if (!empty($email)) { 
      if ($email = clean_string($email)) { 
       $taken = mysql_query("SELECT email FROM users WHERE email='$email'"); 
       $count = mysql_num_rows($taken); 
       if ($count > 0) { 
        $updateProfile_bad_message = '<div class="alert alert-error">The email you have entered is already associated with a Screening account. Please choose another.</div>'; 
       } else if ($count = 0) { 
        $query = "UPDATE users SET email = '$email' WHERE id = '$id'"; 
        mysql_query($query) or die("Insert failed. " . mysql_error() . "<br />" . $query); 
        $updateProfile_good_message = '<div class="alert alert-success">Changes saved</div>'; 
       } else { 
        $updateProfile_bad_message = '<div class="alert alert-error">Sorry, something\'s gone wrong! Please try again later.</div>';?> 
        <script type="text/javascript"> 
         $('a.account-update').trigger('click'); 
        </script><?php 
       } 
      } 
     } 
     if ($_FILES) { 
      $file_name = $_FILES['profile-image']['name']; 
      $file_size = $_FILES['profile-image']['size']; 
      $file_tmp_name = $_FILES['profile-image']['tmp_name']; 


      //Determine filetype 
      switch ($_FILES['profile-image']['type']) { 
       case 'image/jpeg': $ext = "jpg"; break; 
       case 'image/png': $ext = "png"; break; 
       default: $ext = ''; break; 
      } 

      if ($ext) { 
       //Check filesize 
       if ($file_size < 50000000000) { 
        //Process file - resize, clean up filename and move to safe location 
        $image = new SimpleImage(); 
        $image->load($file_tmp_name); 
        $image->resizeToWidth(250); 
        $image->save($file_tmp_name); 


        $n = "$file_name"; 
        $n = ereg_replace("[^A-Za-z0-9.]", "", $n); 
        $n = strtolower($n); 
        $n = "avatars/$n"; 
        move_uploaded_file($file_tmp_name, $n); 
        $query = "UPDATE users SET image = '$n' WHERE id = '$id'"; 
        mysql_query($query) or die("Insert failed. " . mysql_error() . "<br />" . $query); 
        $updateProfile_good_message = '<div class="alert alert-success">Changes saved</div>'; 
       } else { 
        $updateProfile_bad_message = '<div class="alert alert-error">Please ensure your chosen file is less than 5MB.</div>';?> 
        <script type="text/javascript"> 
         $('a.account-update').trigger('click'); 
        </script><?php 

       } 
      } else { 
       $updateProfile_bad_message = '<div class="alert alert-error">Please ensure your image is of filetype .jpg or .png.</div>';?> 
       <script type="text/javascript"> 
        $('a.account-update').trigger('click'); 
       </script><?php 
      } 
     } 
     if (!empty($current_password)) { 
      $current_password = clean_string($current_password); 
      if ($current_password = md5($db_password)) { 
       if ($new_password == $confirm_new_password) { 
        $new_password = clean_string($new_password); 
        $confirm_new_password = clean_string($confirm_new_password); 
        $new_password = md5($new_password); 
        $query = "UPDATE users SET password = '$new_password' WHERE id = '$id'"; 
        mysql_query($query) or die("Insert failed. " . mysql_error() . "<br />" . $query); 
        $updateProfile_good_message = '<div class="alert alert-success">Changes saved</div>'; 
       } else { 
        $updateProfile_bad_message = '<div class="alert alert-error">Your passwords did not match. Please check your spelling and try again.</div>';?> 
        <script type="text/javascript"> 
         $('a.account-update').trigger('click'); 
        </script><?php 
       } 
      } else { 
       $updateProfile_bad_message = '<div class="alert alert-error">Your current password is incorrect. Please check your spelling and try again.</div>';?> 
       <script type="text/javascript"> 
        $('a.account-update').trigger('click'); 
       </script><?php 
      } 
     } 
    } else { 
     $updateProfile_bad_message = '<div class="alert alert-error">Error: could not connect to the database. Please try again shortly.</div>';?> 
     <script type="text/javascript"> 
      $('a.account-update').trigger('click'); 
     </script><?php 
    } 
    require_once("db_close.php");?> 
    <script type="text/javascript"> 
     window.location = "profile.php" 
    </script> 
    <script type="text/javascript"> 
     $('a.account-update').trigger('click'); 
    </script><?php 
} 

UPDATE

Чтобы добавить больше информации, я считаю, что причина, по которой модальные сообщения об ошибках и не появляются потому, что для того, чтобы обновленное информация, отображаемая на странице, сама страница должна быть перезагружена до изменения модальности. Я полагаю, что при перезагрузке страницы все, что было до перезагрузки, в значительной степени устранено, поэтому почему никакая информация, такая как предупреждающие сообщения, не отображается при ручном нажатии кнопки «Обновить профиль» для повторного открытия модальный после перезагрузки страницы. Вот что должно случаться:

  • Если есть какая-либо ошибка, просто показать сообщение обратной ошибки, это не нужно, чтобы перезагрузить страницу
  • Если нет ошибок, перезагрузите страницу, чтобы показать обновленными информация и рендеринг модально подтвердить изменения были успешно сохранены.

ответ

1

За документацию Bootstrap, соответствующий способ вручную отображать модальное использовать параметр show как так:

$(function() { 
    $('#myModal').modal('show'); 
}); 

Более подробную информацию по http://twitter.github.com/bootstrap/javascript.html#modals

обертыванием код в JQuery конструктор, код будет выполнен, когда DOM готов.

+0

Привет, спасибо за ваш комментарий, но это тоже не работает. Ничто на самом деле не изменилось, оно все равно делает то же самое - перезагрузка страницы, но не повторное открытие модального. –

+0

Моя другая мысль состоит в том, что $ ('a.account-update') не соответствует никаким элементам во время выполнения JavaScript. Обновление ответа с использованием другого подхода. –

+0

Извините за отложенный ответ. Я попробовал ваше исправленное решение, и, опять же, это не делает ничего другого. Насколько я могу судить, сообщения обратной связи не устанавливаются и не запускаются. После загрузки страницы нажатие кнопки «Обновить профиль» для открытия модального дисплея показывает стандартный дисплей, и сообщения об обратной связи также не отображаются. –

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