Как получить доступ к функции - PullRequest
1 голос
/ 02 мая 2011

У меня есть такой код JavaScript:

<script>
function Foo() { alert('Foo'); }

$.post('file.php', {}, function(data) {
   $('#elem').append(data);
});
</script>

<div id="elem"></div>

Пример data :

<script>Foo()</script>

Конечно, Foo() там недоступен.Как я могу захватить это?

Ответы [ 5 ]

3 голосов
/ 02 мая 2011

Убедитесь,

  1. jQuery загружен
  2. #elem определяется, когда происходит возврат из вызова ajax. ( попробуйте поставить его перед сценарием, просто чтобы убедиться, )
  3. Убедитесь, что функция foo не определена внутри документа готового метода jquery $(function(){ //FOO should not be defined in here.. });.

пример на http://jsfiddle.net/k7Y55/2/

0 голосов
/ 02 мая 2011

Если вы append("<script>Foo()</script>"), / разрывает строку.Просто добавьте символ \, например: append("<script>Foo()<\/script>").

Да, я знаю, что эта строка является возвращением ajax в вашем случае.Итак, просто верните "<script>Foo()<\/script>" со стороны сервера.

Посмотрите на эту скрипку: http://jsfiddle.net/ErickPetru/qps2q/

0 голосов
/ 02 мая 2011

try:

$.ajax({
  url: "test.html",
  dataType: "script",
  success: function(data){
    $('#elem').append(data);
  }
});

Надеюсь, это поможет.

0 голосов
/ 02 мая 2011

легкий ответ. вам нужно установить переменную так: var foo = function(){}

<script type="text/javascript">
var foo = function(data){
    alert(data);
}

$.post({
    url: 'someurl.aspx',
    success: function(data){
        foo(data);
    }
});
</script>
0 голосов
/ 02 мая 2011

foo должно быть доступно, если оно было определено до его вызова.

Кроме того, вы должны завершать вызовы функций точкой с запятой ;

<script>
  function Foo() { 
    alert('Foo'); 
  }
</script>

...

<script>
  Foo();
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...