Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.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返回Javascript_Javascript_Php - Fatal编程技术网

PHP返回Javascript

PHP返回Javascript,javascript,php,Javascript,Php,我想在这里实现的是响应我的PHP或返回到我的Javascript。现在我必须同时做这两件事,因为PHP需要返回,Javascript需要回显。如果有办法的话,我想实现其中的一个选项来与两者一起工作。我想返回到javascript和php,或者回显到javascript和php以缩短代码。这有可能实现吗 在PHP中使用include()指定变量时,必须使用return$result;在包含的文件中,以便为该变量分配结果。当我去将Javascript部分添加到我的站点时,我现在想到的是必须在我的ph

我想在这里实现的是响应我的PHP或返回到我的Javascript。现在我必须同时做这两件事,因为PHP需要返回,Javascript需要回显。如果有办法的话,我想实现其中的一个选项来与两者一起工作。我想返回到javascript和php,或者回显到javascript和php以缩短代码。这有可能实现吗

在PHP中使用include()指定变量时,必须使用return$result;在包含的文件中,以便为该变量分配结果。当我去将Javascript部分添加到我的站点时,我现在想到的是必须在我的php中分配一个变量$noJS=true;然后运行include并使用if语句了解如何输出

如果(!empty($noJS)): 返回$result; 其他: 回声$结果; endif

基本上我想问的是,有没有更好的方法将结果返回到我的javascript?或者让我的javascript能够获得返回结果,而不必回送并将结果作为responseText获得?如何获得返回响应而不是页面响应上的输出

PHP

Javascript

xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = () => {
        if (xhttp.readyState == 4 && xhttp.status == 200) {
            var notify = document.getElementById('notify'),
                result = xhttp.responseText,
                resarr = result.split(':'),
};
    xhttp.open('POST', '../php/produce.php?rnd=' + round);
    xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhttp.send('amount=' + amount + '&type=' + type);
外部的

if (!empty($noJS)) :
            return [0, 'You selected an invalid turns amount.'];
        else :
            echo '0:You selected an invalid turns amount.';
        endif;
在外部页面上,我无法返回$result;因为xhttp.responseText只接收我在页面上的回声。有没有办法让我的javascript和php一起工作,这样我就可以使用其中一种

更新: 编写了一个页面,试图解释我试图实现的目标。在这段代码中,我无法返回,因为javascript将永远不会收到回音。如果禁用javascript,则以另一种方式执行,将回显放在第一位,然后返回第二位,回显文本将放在页面内doctype的上方。在前面的示例中使用了$noJS变量。现在,我如何让它做一个或另一个,并获得需要分配给它们的变量的值,而不出现问题或必须使用$noJS变量

               Main page:
           <?php
       if (!empty($_POST)) :
        $var = include('external.php');
        /*
            Result must be returned via return and not echo.
            If external page echos instead of using return than $var will 
      have a value of 1 telling me that the include happened successfully.
            Instead of returning the pages contents
        */
                     endif;
                 ?>
                    <!DOCTYPE html>
                      <html>
    <head>
        <script>
            var data = document.getElementById('data').value,
                submit = document.getElementById('submit'),
                xhttp = new XMLHttpRequest();

                submit.addEventListener('click', () => {
                    xhttp.onreadystatechange = () => {
                        if (xhttp.readyState == 4 && xhttp.status == 200) 
        {
                            var notify = 
         document.getElementById('notify'),
                                result = xhttp.responseText,
                            /*
                                Result must be returned via echo and not 
                 via return.
                                If external page returns instead of being 
        echod than 'result' will have no value as there is no content on 
            the external page.
                            */

                                resarr = result.split(':');
                            if (resarr[0] == 0) {
                                notify.style.backgroundColor = '#900';
                            } else {
                                notify.style.backgroundColor = '#090';
                            }
                            notify.innerHtml = resarr[1];
                        };
                    xhttp.open('POST', 'external.php');
                    xhttp.setRequestHeader("Content-type", "application/x- 
             www-form-urlencoded");
                    xhttp.send('data=' + data);
                });
        </script>
                         </head>
           <body>
        <?php if (!empty($var) && $var[0]) : ?>
            <div id="notify" style="background-color:#090;"><?php echo 
             $var; ?></div>
        <?php elseif (!empty($var)) : ?>
            <div id="notify" style="background-color:#900;"><?php echo 
            $var; ?></div>
        <?php else : ?>
            <div id="notify"></div>
        <?php endif; ?>

        <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
            <input id="data" name="data" type="text" placeholder="Data To 
               Send" />
            <button id="submit">Submit</button>
        </form>
    </body>
</html>
主页:
var data=document.getElementById('data')。值,
submit=document.getElementById('submit'),
xhttp=newXMLHttpRequest();
submit.addEventListener('单击',()=>{
xhttp.onreadystatechange=()=>{
如果(xhttp.readyState==4&&xhttp.status==200)
{
变量通知=
document.getElementById('notify'),
结果=xhttp.responseText,
/*
结果必须通过echo返回,而不是
通过返回。
如果外部页面返回而不是
“result”之后的回声将没有任何值,因为屏幕上没有内容
外部页面。
*/
resarr=result.split(“:”);
if(resarr[0]==0){
notify.style.backgroundColor='#900';
}否则{
notify.style.backgroundColor='#090';
}
notify.innerHtml=resarr[1];
};
open('POST','external.php');
xhttp.setRequestHeader(“内容类型”、“应用程序/x-
www表格);;
xhttp.send('data='+data);
});

您正在尝试使用http重定向在两个不同的页面之间运行

您正在尝试使用著名的
位置:
http头

Http重定向不是服务器的工作,而是浏览器的工作

一旦浏览器启动重定向,它就不能保证在该页面中执行JavaScript

如果目标页面中有JavaScript,即
product.php
,当浏览器看到
标记时将执行该JavaScript

include
require
如果有回音,两者都会将php呈现给浏览器

 $var = include('external.php');
如果这段代码有一个echo,它显然会在浏览器中呈现,请从
external.php
中删除所有echo,并通过代码处理它,并有条件地进行输出

如果两者都需要,则向$GET或$POST添加自定义属性,如下所示

 $GET['flag'] = 32;
 $var = include('external.php');
现在在
external.php
中,您可以读取该值32

 if($GET['flag'] == 32)
     return [0, 'Your input was NOT longer than 5 characters!'];
 else
     echo '1:Your input was NOT longer than 5 characters!'; 

请分享一些相关代码。上面描述的文本不够清晰,无法捕获您的意图。此外,请记住javascript在客户端运行,PHP在服务器上运行。如果没有javascript,您的PHP代码将如何执行?我们需要更多地了解您的代码示例,以及您实际试图实现的目标eBecause Javascript可以被禁用。Javascript是一种辅助语言,并不是每个人都启用了Javascript,因为在我看来,Javascript基本上只是网站攻击用户浏览器的一种方式。当你点击一个按钮时,如果你的Javascript被禁用,它将发布到action属性的页面,然后在该页面上触发PHP代码。这是我发布的PHP代码。它会获取外部页面。通过includeI,我试图缩短外部页面上的代码。我只想执行一个或另一个“return”或“echo”从外部页面,让我的PHP和我的Javascript都能够接收数据。如果没有发生返回,则回送时PHP中的包含似乎返回1,这意味着包含成功。但是,如果没有回送,但只有返回,则相反,Javascript不会从返回中接收任何信息,如no数据被回荡到页面上。我想找出一种方法
 $GET['flag'] = 32;
 $var = include('external.php');
 if($GET['flag'] == 32)
     return [0, 'Your input was NOT longer than 5 characters!'];
 else
     echo '1:Your input was NOT longer than 5 characters!';