【问题标题】:Send php string to javascript on submit在提交时将 php 字符串发送到 javascript
【发布时间】:2016-10-15 08:22:40
【问题描述】:

当我点击提交时,我想向 javascript 脚本发送一个 php 字符串。我已经知道如何使用json_encode 传递变量:

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

我想知道的是,如何传递需要从动态下拉列表中选择并且位于while 循环中的变量。

<section class="content">
   <form id="admin" action="monitor.php" method="GET">
    Servers :<br/>
    <select name="category" id="category">
<option value="select">Select...</option> 

<?php
$redis = new redis();

$redis->connect('127.0.0.1', 6379);
$result = $redis->keys('*');
$i = 0;

while ($result[$i]!=null) 
{
    $Addr[$i] = $redis->hget($result[$i], 'Address');
    $Port[$i] = $redis->hget($result[$i], 'Port');
    $fullAdr[$i] = sprintf ("%s:%s", $Addr[$i], $Port[$i]);
    $asdf[$i] = sprintf ("<option value='%s'>%s</option>", $fullAdr[$i], $result[$i]);
    echo $asdf[$i];

    $i++;
}
?>
</select><br/>

<input type="submit" value="Submit"/>

现在我不能使用var str1 = &lt;?php echo json_encode($str) ?&gt;;,因为我不知道用户会选择哪个选项。

每个选择都包含一个服务器的 IP。单击提交时,我需要将该 IP 传递给 Javascript 脚本。

【问题讨论】:

  • php 只能在第一次生成页面时直接与 JS 对话。之后,php 什么也做不了,除了响应客户端的 ajax 请求。
  • 让我粘贴更多代码。单击提交时,我确实会生成一个新页面。我得到一个新的 url,它是包含我需要的 IP 的 url:localhost/test/…
  • @MarcB 我编辑了粘贴的代码,现在您看到提交按钮有一个在同一页面上生成新网址的操作。
  • 所以提交表单,然后 php 可以生成您的新脚本,其中包含该发布的值。就像我说的:一旦页面到达客户端,php 就无法对它做任何事情。在表单提交并发送回服务器之前,它无法看到您选择的内容。

标签: javascript php html drop-down-menu redis


【解决方案1】:

如果有人遇到同样的问题,我正在回答它以供将来参考。

我通过在文件顶部放置一个 php 使其工作:

<?php

$JSAddress = $_GET['servers'];

?>

我后来将其传递给 javascript:

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

所以基本上当用户点击提交时,它会将请求发送到上面存储值的 php 并将其传递给 javascript。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多