Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么我能';不在Ajax响应文本中编写Javascript代码吗?_Php_Javascript_Ajax - Fatal编程技术网

Php 为什么我能';不在Ajax响应文本中编写Javascript代码吗?

Php 为什么我能';不在Ajax响应文本中编写Javascript代码吗?,php,javascript,ajax,Php,Javascript,Ajax,PHP上的reponseText应该是这样的 echo“警报('test')” 但什么也没发生。如何返回Javascript代码?您已将其作为文本返回。现在,您需要做的就是以某种方式将该文本插入页面: document.body.innerHTML += response; 发生了很多事情,做出了很多假设,但这是最简单的方法 (好吧,这并不完全正确。最简单的方法是返回JavaScript,然后evalit。)您已将其作为文本返回。现在,您需要做的就是以某种方式将该文本插入页面: documen

PHP上的
reponseText
应该是这样的

echo“警报('test')”


但什么也没发生。如何返回Javascript代码?

您已将其作为文本返回。现在,您需要做的就是以某种方式将该文本插入页面:

document.body.innerHTML += response;
发生了很多事情,做出了很多假设,但这是最简单的方法


(好吧,这并不完全正确。最简单的方法是返回JavaScript,然后
eval
it。)

您已将其作为文本返回。现在,您需要做的就是以某种方式将该文本插入页面:

document.body.innerHTML += response;
发生了很多事情,做出了很多假设,但这是最简单的方法


(当然,这并不完全正确。最简单的方法是返回JavaScript,然后对其进行评估。)

ajax调用由调用方决定如何处理(取决于返回的数据类型)。在这种情况下,如果您的调用者不准备执行此操作,则不会发生任何事情。根据实际代码在这里要执行的操作,处理ajax调用返回的结果有许多不同的可能性。

它可以格式化为JSONP,以便在主页代码中调用函数来处理返回的数据。您可以返回完整的JS(不带标签)并在主机页之后对其执行eval()(由于存在一些安全风险,通常认为这不是一个明智的想法),也可以将其添加到当前页面,让浏览器只解析您放在其中的任何内容。

通常,Ajax调用返回纯数据,您的主机页代码处理该数据并保存决定如何处理该数据的代码。这是最安全的机制,因为hijaacked连接无法将代码注入页面(它所能做的就是更改数据)。

ajax调用由调用方决定如何处理它(取决于返回的数据类型)。在这种情况下,如果您的调用者不准备执行此操作,则不会发生任何事情。根据实际代码在这里要执行的操作,处理ajax调用返回的结果有许多不同的可能性。

它可以格式化为JSONP,以便在主页代码中调用函数来处理返回的数据。您可以返回完整的JS(不带标签)并在主机页之后对其执行eval()(由于存在一些安全风险,通常认为这不是一个明智的想法),也可以将其添加到当前页面,让浏览器只解析您放在其中的任何内容。

通常,Ajax调用返回纯数据,您的主机页代码处理该数据并保存决定如何处理该数据的代码。这是最安全的机制,因为hijaacked连接无法将代码注入页面(它所能做的就是更改数据)。

下面是一个简单的示例。但是,不要将
标记包含在这个棘手的问题中

$.ajax({
    type: "GET",
    dataType: "text",
    url: "jsLoader.php",
    success: function(data){
        eval(data);
    }
});

这里有一个简单的例子。但是,不要将
标记包含在这个棘手的问题中

$.ajax({
    type: "GET",
    dataType: "text",
    url: "jsLoader.php",
    success: function(data){
        eval(data);
    }
});

执行
document.body.innerHTML+=响应
必须重新创建整个DOM,并且可能会丢失一些数据。另外,我认为你不能用这种方式附加脚本。它在某些浏览器中有效,在其他浏览器中则不太有效。(有趣的是,您在“盲目插入/评估脚本是一种安全风险”之前使用了“丢失信息”。)当您是脚本的作者时,这不是一种安全风险。这仍然有效。但正如我所说,有一些假设正在进行。你应该试试,看看会发生什么。(在我看来,对生活总的来说是个好建议。)做
document.body.innerHTML+=response
必须重新创建整个DOM,并且可能会丢失一些数据。另外,我认为你不能用这种方式附加脚本。它在某些浏览器中有效,在其他浏览器中则不太有效。(有趣的是,您在“盲目插入/评估脚本是一种安全风险”之前使用了“丢失信息”。)当您是脚本的作者时,这不是一种安全风险。这仍然有效。但正如我所说,有一些假设正在进行。你应该试试,看看会发生什么。(在我看来,这是对生活的一个很好的建议。)对不起,我是否标记了
jQuery
?本例的主要焦点是eval()函数。如何处理ajax请求没有什么区别。对不起,我是否标记了
jQuery
?本例的主要焦点是eval()函数。如何处理ajax请求没有任何区别。可能重复的BERTER:---简单搜索:可能重复的BERTER:---简单搜索: