Как запустить скрипт внутри страницы ajax - PullRequest
0 голосов
/ 21 февраля 2012

При переходе по ссылкам отправляю ajax-вызов, чтобы получить ответ, могу получить правильный ответ, но тег сценария на странице ответа не работает.как заставить его работать

Это HTML-страница

<HTML>
<HEAD>

<link rel="stylesheet" type="text/css" href="css/global.css">
<script type="text/javascript" src="js/ajaxgetter.js"></script>
<script type="text/javascript" src="js/mootools.js"></script>
</HEAD>

<BODY>

<h1>ajax block container</h1>

<div id="container">
    <div id="tab_wrapper">
        <ul id="tab_list" >
            <li>
             <a href="#" id="firstelement" onclick="ajaxenabled('elements/firstelement.html','firstelement','content_tab')">Number 1 </a>               
            </li>
            <li>
             <a href="#" id="secondelement" onclick="ajaxenabled('elements/secondelement.html','secondelement','content_tab')">Number 2</a>
              <br/><br/><br/>
              </li>

        </ul>
    </div>

<br/><br/><br/><br/><br/><br/>

<div id="content_tab">

</div>
</div>

</BODY>
</HTML>

Код javascript

function ajaxenabled(url,param,id)
{
    var page_request = false    
    if (window.XMLHttpRequest){
        page_request = new XMLHttpRequest()
    }
    else if (window.ActiveXObject){
        try{
            page_request = new ActiveXObject("MSXML2.XMLHTTP")
        } 
        catch (e){
            try {
                page_request = new ActiveXObject("Microsoft.XMLHTTP")
            }
            catch (e){}
        }
    }
    else
        return false;
        page_request.onreadystatechange=function(){
            if(param!=null)
            {
                loadpage(page_request, param,id);
            }
            if(param==null)
            {
                loadpage(page_request,'',id);

            }
        }
        page_request.open('GET', url, true);
        page_request.send(null);
}


function loadpage(page_request,param,id){

    var getblock=document.getElementById(id);

    if(page_request.status==200) {
        getblock.style.display='block';
        getblock.innerHTML=page_request.responseText;

    if(param!=null)
        {
            //alert("showed");
        }   

    }

}

Страница ответа "firstelement.html"

<h1>First Element having ajax call</h1>

<script type="text/javascript">
alert("testing the simple function");
</script>

Оповещение на вкладке «Сценарий» внутри firstelement.html не сработало,

Ответы [ 2 ]

0 голосов
/ 21 февраля 2012

Я просто использую mootools Request.HTML , он оценит все теги скрипта на возвращаемой странице и заменит HTML в элементе, если в параметрах установлено обновление.

0 голосов
/ 21 февраля 2012

Вы должны переместить этот скрипт из файла HTML в файл .js и вызвать этот скрипт после того, как вы успешно завершили вызов ajax.Ваш HTML-файл будет выглядеть так:

  <HTML>
  <HEAD>

  <link rel="stylesheet" type="text/css" href="css/global.css">
  <script type="text/javascript" src="js/ajaxgetter.js"></script>
  <script type="text/javascript" src="js/mootools.js"></script>
  <script type="text/javascript" src="js/YOUR_SCRIPT_FILE_HERE.js"></script>
  </HEAD>

  <BODY>

  <h1>ajax block container</h1>

  .
  .
  .

Вы, конечно, переместите

<script type="text/javascript">
alert("testing the simple function");
</script>

в файл .js, который вы поместите в каталог "js".Не забудьте сделать это как метод, который вы можете вызвать, чтобы в файле .js было что-то вроде

function afterAjaxSuccess(){
    alert("testing the simple function");
  }

, а затем в вашем html-файле вы обновили свой метод loadpage следующим образом:

function loadpage(page_request,param,id){

var getblock=document.getElementById(id);

if(page_request.status==200) {
    getblock.style.display='block';
    getblock.innerHTML=page_request.responseText;
    afterAjaxSuccess();                             //updated line here

if(param!=null)
    {
        //alert("showed");
    }   

}

}

и ваша HTML-страница становится

<h1>First Element having ajax call</h1>

без какого-либо сценария

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...