как остановить теги сценария от оценки при вставке в DOM с помощью jquery ajax или post - PullRequest
2 голосов
/ 05 марта 2010

как прекратить оценку тегов скрипта в jquery ajax и публиковать ответы? Пожалуйста, найдите соответствующий код ниже. Функция sendForm () оценивается, даже когда я использую dataType : 'text'

<HTML>
 <HEAD>
 <TITLE>This is the title</TITLE> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js" type="text/javascript"></script> 
<SCRIPT> 
function get_info(url,data,callback,errorFunction)
{  
 $.ajax({ type: 'POST',   url: url,   data: data,   success: callback,   dataType: 'text',   error: errorFunction,   cache : false });
} 
</SCRIPT> 
</HEAD>
<BODY>
<A NAME="this"></A> <A HREF="#this" ONCLICK="get_info('Result1.lasso','temp=1&testParam=Rajesh',function(response){$(document.getElementById('test')).html(response);},function(){$(document.getElementById('test')).html('Error');})">Some Text</A> 
<DIV id = 'test'></DIV>
</BODY>
</HTML>

Result1.Lasso

<script type="text/javascript">
    function sendForm()
    {   
        alert('hi');
    }
</script>
<form name= "abc" method = "get" action = "abcd.lasso">
    <input type ="text" name = "element1"/>
    <input type = "button" value="Click" onClick = "javascript: sendForm();"/>
</form>

1 Ответ

1 голос
/ 05 марта 2010

Лучшее, что я могу сказать, причина, по которой выполняется скрипт, это строка кода:

$(document.getElementById('test')).html(response)

Поскольку вы добавляете его как html, вы добавляете все элементы html, включая скрипт. Если вы измените html () на text (), вы НЕ будете выполнять javascript, но я не думаю, что это будет выглядеть так, как вы хотите, чтобы оно работало.

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

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