2017-07-02 53 views
8

我有JavaScript,我想在JavaScript中运行包含脚本。我尝试了以下声明:PHP包含在JavaScript中不起作用

outputEl.innerHTML = '<?php include "./change/ud1.php";?>'; 

当我运行脚本时,我没有得到任何回应。

有人知道为什么我没有得到任何答复,我怎么能解决它?

我试图用html iframe替换PHP include。这工作,但这不是我最好的解决方案。

+0

你想在'innerHTML'中包含什么? HTML回应? –

+0

我在互联网上发现了一些脚本,他们都使用'innerHTML' – John

+0

您需要使用'window.location ='page''加载它[ref](https://www.sitepoint.com/community/t/load-url-with-javascript/1285/4)可能会帮你 –

回答

1

两种方式:

第一:

<script> 
     document.write('<?php echo include_once "./change/ud1.php";?>'); 
    </script> 

二:

<script type="text/javascript" src="./change/ud1.php"></script> 
+0

With:'outputEl.innerHTML = document.write('<?php echo include_once“./change/ud1.php”;?>');'脚本没有响应。 With:'outputEl.innerHTML ='';'我的javascript的其他部分正在丢失他的''text/javascript“'和不工作 – John

1

试试这个

$("#output1").load("change/ud1.php"); 
7

您不能运行PHP的插件ide .js文件。据我所知,你将需要从你的js文件中获取php文件的内容。

这是一个简单的实现。

var xhr = new XMLHttpRequest(); 

xhr.onload = function() { 
    outputEl.innerHTML = this.response; 
}; 

xhr.open('GET', './change/ud1.php', true); // you may need to correct the url to be relative to the js file 
xhr.send(); 

(一旦你已经包括了jQuery库),你可以使用类似这样

$(outputEl).load("change/ud1.php"); 
+0

“你不能在一个.js文件中运行php” - 这是不正确的,因为有用JS编写的PHP解释器,例如[php.js](http://phpjs.hertzen.com/) – feeela

+2

我相信你可以从问题中推断出OP很可能不会将PHP转换成JS。 – Aknosis

4
  • PHP这可能是更容易和更强大的使用jquery,在这种情况下是服务器端语言。
  • JavaScript是客户端语言。

所以PHP只能执行服务器上和JavaScript用户的浏览器中执行。

在JavaScript(浏览器)中运行的php代码没有办法。所以你需要像这样使用ajax。

var xhttp = new XMLHttpRequest(); 

xhttp.onreadystatechange = function() { 
    if (this.readyState == 4 && this.status == 200) { 
     // server sent data successfully in this.responseText variable 
     document.getElementById("output1").innerHTML = this.responseText; 
    } 
}; 

//Request data from a server 
xhttp.open("GET", "path/to/php/include-script.php", true); 
xhttp.send(); 

了解关于ajax的更多信息here

+0

“php只能在你的服务器上执行” - 这是不正确的,因为有用JS编写的PHP解释器,例如[php.js](http://phpjs.hertzen.com/) – feeela

+1

“这个库读取PHP代码并将其转换为JavaScript代码“ –

2

简单地使用

<script type="text/javascript" src="filename.php"></script> 

而且通过此标题( “内容类型:文本/ JavaScript的”);在php文件的顶部。

11

没有需要在这种情况下

您可以使用响应使用JavaScript直接在要

<div id="outputEl"><?php include "./change/ud1.php";?></div> 
+0

如果op不想执行'outputEl.innerHTML ='<?php include”./change/ud1.php“;?>';',那么这是最好的解决方案在某些客户端(JS)事件。 –

-1

这也将正常工作。把这段代码放到你的.php文件中,你可以把脚本放到你的。php

<script type="text/javascript"> 
    outputEl.innerHTML = "<?php include './change/ud1.php';?>"; 
</script> 
2

这是不正确的做法。您应该将html变成一个php变量,然后将该变量用于JavaScript。如果你使用MVC,那么它很容易。我张贴的答案,而无需使用MVC:

$html = file_get_contents('path/to/YOUR/FILE.php'); 

在Javascript中

var html = '<?php echo $html; ?>'; 
3

您还可以使用jquery加载php文件的内容在你指定的HTML元素。

$.get("path/to/yourfile.php", function(data, status){ 
    outputEl.innerHTML = data; 
}); 
2

你不能直接这样做。如果您想更换这样的内容你有以下两种选择

  1. 发送AJAX请求到该文件,然后将该文件将发送整个HTML作为成功函数的数据参数,然后你可以使用数据无论你想要的。

  2. 或者您必须重定向到该页面,并且您希望将一些数据发送到该文件,那么您可以将其作为获取请求。

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
    
    <script>  
        $.ajax({ 
         type: "POST", 
         url: "<?php include "./change/ud1.php"; ?>", //ensure URL is correct 
         data: { }, //send some data if you want to that file or else remove this line 
         dataType: "html", 
         success: function(data) { 
          if($.trim(data)) { 
           $('#outputEl').html(data); 
          } else { 
           alert("Something went wrong!!"); 
          } 
         }, error: function() { 
          alert("ERROR!"); 
         } 
        }); 
    </script>

而且可以作为

&lt;script&gt; 
    window.location.href = "./change/ud1.php"; //And pass any parameters to that file if you wish as a GET request 
&lt;/script&gt; 

让我知道如果您需要任何进一步的帮助

2

使单引号双引号,并尝试执行步骤2

+0

这不会回答一个问题,应该是一个评论。请参阅[我应该何时评论?](https://stackoverflow.com/help/privileges/comment)。 一旦你有足够的[声望](https://stackoverflow.com/help/whats-reputation),你将可以在任何帖子上[评论](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 – Dwhitz

1

的PHP代码在服务器上呈现,您使用的是Javascript,如果您不在服务器上,则无法呈现PHP。

1

你不能这样做,因为PHP代码呈现之前JavaScript。还有许多其他的方式来做到这一点:

如果outputEl是一个div元素的ID:

1-没有的jQuery/JavaScript的

<div id="outputEl"><?php include "./change/ud1.php";?></div> 

2-使用jQuery负荷功能

$("#outputEl").load('./change/ud1.php'); 

3-带JavaScript功能

window.onload = function() { 
    if (XMLHttpRequest) 
    var x = new XMLHttpRequest(); 
    else 
    var x = new ActiveXObject("Microsoft.XMLHTTP"); 
    x.open("GET", "./change/ud1.php", true); 
    x.send(); 
    x.onreadystatechange = function() { 
    if (x.readyState == 4) { 
     if (x.status == 200) 
     outputEl.innerHTML = x.responseText; 
     else 
     outputEl.innerHTML = "Error loading document"; 
    } 
    } 
}