Что здесь необходимо для того, чтобы ответ сервера ajax выполнялся как есть в функции post jjuery ajax? - PullRequest
1 голос
/ 24 октября 2010

Приведенная ниже функция jQuery возвращает эту строку:

'#prayer_date'.html("03/19/1968");

Но она не выполняется, потому что приведенная ниже функция не действует на переменную data.

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

$('.showprayer').click( function(event) 
{
  $.post('/show_prayer', { 'name' : $(this).text() }, function(data) 
  {
      // how to execute the `data` server response as-is?
  });
});

1 Ответ

1 голос
/ 24 октября 2010

Ваш ответ сначала должен быть действительным сценарием, например:

$('#prayer_date').html("03/19/1968");

Тогда в вашей функции вы можете вызвать eval(), например:

$('.showprayer').click( function(event) {
  $.post('/show_prayer', { 'name' : $(this).text() }, function(data) {
    eval(data);
  });
});

.... но это почти никогда не является хорошим решением , вероятно, есть лучший / более прямой путь, чтобы сделать то, что вы ищете. Несколько лучшее / более безопасное решение - использовать расширенную форму $.ajax() для глобального eval, например:

$('.showprayer').click( function(event) {
  $.ajax({
    url: '/show_prayer',
    type: 'POST',
    data { 'name' : $(this).text() }, 
    dataType: 'script'
  });
});

Разница в том, что здесь используется jQuery.globalEval(), который вставляет скрипт в <head>, как если бы это был обычный запрос GET <script>, вместо фактического вызова eval()* На нем 1025 *.

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