如何执行ajax响应返回的javascript函数


how to execute a javascript function returned from ajax response

我有一个函数,当ajax成功请求时,我想执行它,但它没有在这里执行我的jquery部分

$.ajax({  
    type: "POST",  
     url: "https://www.example.com/create_chat.php",  
     data: dataString,
        beforeSend: function() 
            {
                $("#loading_indicator").show();
            },  
        success: function(response)
            {
                $(".example").html(response);
            }
        }); 

这是来自php文件的响应

<script>start_chat(); alert("testing");</script>

我试着添加这个

$(".example").find("script").each(function(i) {
eval($(this).text());
});

但是什么都不起作用

create_chat的响应可以指示将使用哪个函数。例如

$.ajax({  
    type: "POST",  
     url: "https://www.example.com/create_chat.php",  
     data: {
      dataString: dataString
    },
        beforeSend: function() 
            {
                $("#loading_indicator").show();
            },  
        success: function(response) // response could be 1,2,3,4.. etc
            {
                if(response==1) {
                start_chat();
                }
                if(response==2) {
                stop_chat();
                }
                if(response==3) {
                change_chat_room();
                }
                ...
                $(".example").html(response);
            }
        }); 

虽然有解决方案,但您永远不应该直接执行Ajax调用的响应。

"生成的文档树中的脚本将不会执行,将不会加载引用的资源,也不会加载任何关联的XSLT应用"

http://www.w3.org/TR/XMLHttpRequest/#document-响应实体主体

最佳实践是使用数据进行响应,通常采用JSON、JSONP或HTML的形式。

试试这个,

  $.ajax({
    type: "POST",
    data: {
      'dataString': dataString
    },
    url: 'https://www.example.com/create_chat.php',
    success: function(data) {
      start_chat();
      alert('Success');
    },
    error: function(data) {
      alert('failed');
    }
  });