【问题标题】:how to passing values from php to javascript to html to php如何将值从 php 传递到 javascript 到 html 到 php
【发布时间】:2017-01-09 23:50:57
【问题描述】:

PS:最后是完整代码

我有 2 页。

php.php

js.php

我使用 curl 将变量从 php.php 发送到 js.php

 function js(){
 $ch = curl_init();
 curl_setopt($ch , CURLOPT_URL ,"http://localhost/js.php");
 curl_setopt($ch , CURLOPT_POST , true);
 curl_setopt($ch, CURLOPT_POSTFIELDS," ");
 curl_setopt($ch , CURLOPT_FOLLOWLOCATION , TRUE);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 $allaa= curl_exec($ch);
 $errorr = curl_error($ch);
 echo $allaa;
 return $allaa; 
 }

js.php 包含 Javascript 代码

我将我从第一页收到的值传递给第二页中的Javascript

通过此代码

 var variable=<?php echo  json_encode($variable); ?>;

我对变量做了一些处理 结果我用这段代码打印出来

 variable="Hello World";
 document.getElementById("result").innerHTML = "!!!"+variable+"!!!";

js.php 包含

html代码

 <p id="result"> </p>

Javascript的结果必须像这样出现在标签中

 <p id="result">!!!Hello World!!! </p>

php.php 页面 我将返回值存储在变量x

我打印出来了

 $x=js();

 $xb = get_string_between($x, "!!!", "!!!");
 echo xb;

结果必须是

你好世界

但事实并非如此 它的

"+变量+"

如何解决这个问题

新编辑这是代码

php.php页面代码

  <?php
  function get_string_between($string, $start, $end){
  $string = ' ' . $string;
  $ini = strpos($string, $start);
  if ($ini == 0) return '';
  $ini += strlen($start);
  $len = strpos($string, $end, $ini) - $ini;
  return substr($string, $ini, $len);
  }
  function js(){
  ////////////////
  $ch = curl_init();
  curl_setopt($ch , CURLOPT_URL ,"http://localhost/js.php");
  curl_setopt($ch , CURLOPT_POST , true);
  curl_setopt($ch, CURLOPT_POSTFIELDS,"variable=hello");
  curl_setopt($ch , CURLOPT_FOLLOWLOCATION , TRUE);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  $allaa = curl_exec($ch);
  $errorr = curl_error($ch);
  echo  $allaa;
  return $allaa;    
  }

  $ff=js();
  echo $xb = get_string_between($ff, "!!!", "!!!!");
  ?>

js.php页面代码

  <?php 
  global $variable;

  $variable=$_POST['variable'];

  ?>
  <html>

  <script>
  var variable=<?php echo  json_encode($variable); ?>;
  variable=variable+" world ";
  document.getElementById("result").innerHTML = "!!!"+variable+"!!!!";
  </script>
  <p id="result"> </p>

  </html>

【问题讨论】:

  • 你这样做有什么原因吗?
  • 是的,最大的原因是我想使用一个名为 JSEncrypt() 的 JavaScript 函数,它只用于 javascript,我想通过这个值处理来自 php 的值,我想处理许多变量和所有这些在一页中而不更改当前页面
  • !!Hello World!! 两侧有两个 ! ...get_string_between($x, "!!!", "!!!"); 查找 THREE! .. 通过查找无法找到 !!对于!!!(PS 这个评论看起来像brainf*ck 代码!!)
  • 现在检查代码:)
  • 我的意思是有理由使用 curl 吗?但是在 javascript 中你需要定义变量: var variable="Hello World";

标签: javascript php html curl


【解决方案1】:

这个问题很难回答,因为它都被分解了,我们看不到全貌。但是,我会尽力剖析您的要求。首先,您在 php.php 中有这段代码:

function js(){
$ch = curl_init();
curl_setopt($ch , CURLOPT_URL ,"http://localhost/js.php");
curl_setopt($ch , CURLOPT_POST , true);
curl_setopt($ch, CURLOPT_POSTFIELDS," ");
curl_setopt($ch , CURLOPT_FOLLOWLOCATION , TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result= curl_exec($ch);
$errorr = curl_error($ch);
echo $allaa;
return $allaa; 
}

我对此有一些疑问。首先,虽然不完全相关,但 CURLOPT_URL 可以用 curl_init() 代替。其次是您有空的帖子字段(在您编辑之前它是$post,这同样是神秘的)。第三,您回显并返回一个名为$allaa 的变量。没有人知道这个变量是什么或来自哪里。

无论如何,显然您已经调用了第二个页面 js.php,其中包含一些 JavaScript。假设正确的信息是通过 POST 从 js() 函数发送过来的。

您的 js.php 文件代码中的某处看起来像这样:

var variable=<?php echo  json_encode($variable); ?>;

我假设这介于&lt;script&gt; 标签之间。那么,这是什么$variable?我们不知道它是什么。不过,您似乎暗示来自js() 的所需信息最终会出现在$variable 中。这就是我会质疑是否传递了正确的信息的地方。此外,您正在通过json_encode() 运行它,这可能意味着某处有双引号。 JavaScript 会如何处理这个问题?

最后,您尝试通过发出操纵 DOM 的 JavaScript 将传递的变量插入 HTML:

document.getElementById("result").innerHTML = "!!!"+variable+"!!!";

然后由于某种原因你决定用 PHP 再次打印它:

$x=js();

$xb = get_string_between($x, "!!!", "!!!");
echo xb;

这会带回字符串+variable+。这里的问题很简单。 JavaScript 在服务器端代码执行后在客户端执行。因此,此代码也完全按照您的说明进行操作。 变量在浏览器执行客户端 JavaScript 之前不会被替换。

【讨论】:

  • :D 感谢您的重播。我修复了代码你可以在我的帖子末尾看到完整的代码,有没有办法在没有浏览器的情况下修复它?我需要从 javascript 到 php 的值,问题是如果我决定在浏览器上显示它,我将无法将它带回 php,因为 php 代码将被执行并完成,我希望所有这些都在一页中
  • 如果我是你,我根本不会使用 JavaScript。似乎毫无意义。无论如何,用户都可以禁用 JavaScript,并且一些旧版或受限客户端不支持它。为什么不把它保存在 PHP 中呢? &lt;p id="result"&gt;&lt;?php echo json_encode($variable); ?&gt;&lt;/p&gt;
  • 因为有一个仅用于 javascript 的函数,称为 JSEncrypt() 仅用于 javascript :(
  • @MohammedNaji 在概述问题之前,您永远不应该决定要使用的工具。这就像在说“我想用这个插座组来盖屋顶”。它根本行不通。如果您浏览了一些 PHP 文档,您会发现有类似的功能。 php.net/manual/en/ref.openssl.php
【解决方案2】:

我认为来自 js.php 的脚本不会在服务器端进行解释,并且您会将此脚本作为纯文本在“!!!”之间只是“+变量+”。

【讨论】:

  • 我不这么认为,我测试了一下,直接打开js.php,打印出来的值没有任何问题。我认为问题在于在浏览器上显示结果,结果必须显示在浏览器上,但我想在不显示值的情况下取回值,谢谢。
  • 你是如何打开这个文件的,你得到了什么?
  • 我知道执行 php + javascript 时出现问题
  • var 变量=;这段代码呢?此代码确实将服务器端值传递给 javascript
  • @jan199674 从 javascript 到 html 到 php 而不是从 php 到 javascript 的响应问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-30
  • 2011-07-14
  • 2016-07-22
  • 1970-01-01
  • 2015-08-22
  • 2011-07-03
  • 2013-02-28
相关资源
最近更新 更多