2016-05-28 3 views
0

Я использую эту функцию javascript, чтобы отображать всплывающее сообщение url как аргументы, но я хочу, чтобы форма автоматически отображалась без onclick и ее не работала.Невозможно вызвать jquery автоматически

<!-- show_modal.php included in body --> 

    <script type="text/javascript"> 
    function showModal(url) 
    { 
     // SHOWING AJAX PRELOADER IMAGE 
     jQuery('#modal_ajax .modal-body').html('<div style="text-align:center;margin-top:200px;"><img src="assets/images/preloader.gif" /></div>'); 

     // LOADING THE AJAX MODAL 
     jQuery('#modal_ajax').modal('show', {backdrop: 'true'}); 

     // SHOW AJAX RESPONSE ON REQUEST SUCCESS 
     $.ajax({ 
      url: url, 
      success: function(response) 
      { 
       jQuery('#modal_ajax .modal-body').html(response); 
      } 
     }); 
    } 
    </script> 

<!-- (Ajax Modal)--> 

    <div class="modal fade" id="modal_ajax"> 
     <div class="modal-dialog"> 
      <div class="modal-content"> 

       <div class="modal-header"> 
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
        <h4 class="modal-title"><?php echo $system_name;?></h4> 
       </div> 

       <div class="modal-body" style="height:500px; overflow:auto;"> 



       </div> 

       <div class="modal-footer"> 
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
       </div> 
      </div> 
     </div> 
    </div> 

<!-- show_modal.php ends --> 

PHP $ URL переменной

<?php $url = "'".base_url() . "index.php?modal/popup/student_add/1'";?> 

Вызов автоматически

<script type="text/javascript"> 

$(document).ready(function(){ 
     showModal(<?=$url?>); 
}); 

</script> 

Когда я называю documentready: просто показывает темный фон

он работает с onclick

<a href="#" onclick="showModal(<?=$url?>);" > </a> 

консоли:

console1

console2

+0

Вы видите ошибку в консоли? – brk

+0

Как проверить консоль – Mysterio4

+0

щелчком правой кнопки мыши -> проверить элемент или проверить -> консоль -> проверить журналы – keziah

ответ

1

На странице ready звонок? Если он был выше того места, где вы загружаете jQuery, ready не будет использоваться, поскольку $ еще не существует.

Если это так, у вас, вероятно, будет сообщение об ошибке в the console по линиям ReferenceError: $ is not defined. Перемещение тега скрипта, загружающего jQuery над блоком сценария, где вы пытаетесь вызвать его, должно исправить это.

Когда браузер анализирует страницу и встречает блок <script> без атрибута src, он сразу же запускает код в блоке. Если у тега скрипта есть атрибут src, он загружает этот код, а затем запускает его, прежде чем переходить к следующему тегу скрипта. Поэтому, если вы вызываете $(), прежде чем вы скажете браузеру загрузить jQuery, браузер не знает, что вы подразумеваете под $, потому что jQuery еще не установил $, чтобы быть ссылкой на него. (Есть способы для loading JavaScript in a non-synchronous manner, но вы должны их выбрать.)

Причина, по которой он работает при нажатии ссылки, заключается в том, что обработчик click не запускается, пока вы не нажмете на него. Это дает jQuery момент для загрузки, так что $ определяется, когда он пытается его вызвать.

+0

Есть ли сообщения об ошибках в консоли? –

+0

Я только что включил консольное сообщение в вопрос – Mysterio4

+0

Из предоставленной вами ссылки я решил использовать атрибут 'onload', и он отлично работает. благодаря – Mysterio4

-1

Отредактированный ответ

Пожалуйста, попробуйте определить, если в сценарии вы будете использовать jQuery или $, дополнительно, если ваш скрипт работает хорошо, нажав на этот элемент <a href="#" onclick="showModal(<?=$url?>);" > </a>, то вы можете использовать jQuery trigger(), чтобы имитировать событие щелчка вашей модальной ссылки на DOM.

Вот несколько тестовых скриптов с тем, чего вы хотите достичь. 1-я и 2-я скрипки в порядке 3-я и 4-я части имеют незначительный недостаток.

http://jsfiddle.net/WQXXT/1911/

http://jsfiddle.net/WQXXT/1912/

http://jsfiddle.net/WQXXT/1913/

http://jsfiddle.net/WQXXT/1914/

Пример с использованием beforeSend В Ajax

http://jsfiddle.net/WQXXT/1916/

+0

Я попытался изменить 'jQuery' на' $ 'пока нет изменений – Mysterio4

+0

Возможно, мне придется попробовать триггер – Mysterio4

+0

@ Mysterio4 просто проверьте отредактированный ответ, я использую как триггер, так и просто вызов функции showModal. –

0

Попробуйте это:

1) убедитесь, что $ URL генерируется до принятия в функции ShowModal, объявите $ URL в начале страницы

2) Удалить дополнительную одинарную кавычку конкатенации от $ URL

<?php $url = "aa"."index.php?modal/popup/student_add/1";?> //Remove extra single quote concatenation from $url 


<script> 
$(document).ready(function() { 
    showModal('<?php echo $url; ?>'); // add single quotes here 
}); 

function showModal(url) 
{ 
    // SHOWING AJAX PRELOADER IMAGE 
     jQuery('#modal_ajax .modal-body').html('<div style="text-align:center;margin-top:200px;"><img src="assets/images/preloader.gif" /></div>'); 

     // LOADING THE AJAX MODAL 
     jQuery('#modal_ajax').modal('show', {backdrop: 'true'}); 

     // SHOW AJAX RESPONSE ON REQUEST SUCCESS 
     $.ajax({ 
      url: url, 
      success: function(response) 
      { 
       jQuery('#modal_ajax .modal-body').html(response); 
      } 
     }); 
} 
+0

Когда я пробовал одиночные кавычки, он затемнял экран, с консольной ошибкой s отображается выше – Mysterio4

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