【问题标题】:How to save value of dropdown in PHP without submitting?如何在不提交的情况下在 PHP 中保存下拉列表的值?
【发布时间】:2020-08-29 14:56:06
【问题描述】:

有没有办法将此下拉列表的值保存在 PHP 中的变量中(无 AJAX)而不实际提交表单?

 <p>
            Choose device type :
            <?php
            echo "<select name='device_type_id'>";
            echo "<option value='Select'>Select</option>";
            foreach ($dev_type_results as $row) {
                echo "<option value='" . $row['id'] . "'>" . $row['name'] . "</option>";
            }
            echo "</select>"; ?>
        </p>

【问题讨论】:

  • 如果您不将数据发送到服务器,您将无法将任何值从客户端保存到服务器。 ajax 有什么问题?
  • 你可以使用 fetch 或 XMLHttpRequest 来完成,这些都是默认的 javascript 库来发送数据
  • @Cid 我刚接触 PHP,当我看到 Ajax 时,我感到害怕。好的,如果您可以在 Ajax 中提供帮助,这就是我需要的:我需要在两个不同的页面中访问选定的值,那么我该如何使用 Ajax 来做到这一点?
  • 你能说出你想要达到的目标吗?它可以是 Ajax/Fetch,也可以是通过 cookie/本地存储/会话存储在本地存储。你确定你需要服务器上的那个值吗?

标签: php html dropdown


【解决方案1】:

据我所知,你不能。 php生成你的页面,然后select方法在客户端的浏览器上实现,而不是在服务器上(服务器端的php脚本不再运行)。您需要提交表单并再次运行 php 脚本,从 POST 中提取值。

【讨论】:

  • 好的,你能帮我在 Ajax 中做吗?我需要在两个不同的页面中访问选定的值。
  • stackoverflow 不是为别人做事。当您遇到一些问题时,它会有所帮助。我可以给你一个建议,对于初学者来说最简单的方法是使用 JQuery 和它的 .ajax() 函数。谷歌它或阅读文档。
  • @MaxShaian 我试图找到一些有用的东西,但找不到任何东西。我完全迷路了!
  • @mr.fartty api.jquery.com/jquery.ajax 有很多现实生活中的例子。祝你在这条令人不安的道路上好运!你可以在stackoverflow之外联系我寻求帮助:t.me/vanguardkras
【解决方案2】:

通过 AJAX 或直接提交表单,将请求发送到服务器端,在我们的例子中是 PHP。

如果您希望服务器接收任何数据,您需要提交表单。

答案是否定的。上述限制是不可能的。

【讨论】:

  • 那你能帮我用Ajax怎么做吗?我需要在两个不同的页面中访问该值
【解决方案3】:

没有。除非您提交它,否则不在 PHP 中,将其保存在 db 中并在不同页面上获取它。为了将值保存在前端,您必须使用 React 或 Vue 中常见的存储或状态。另一种方法是使用 javascript 保存在 localstorage、缓存存储、IndexDB 或 cookie 中。然后您可以从那里检索您的值

【讨论】:

  • 那你能帮我用Ajax怎么做吗?我需要在两个不同的页面中访问该值。
【解决方案4】:

如果您不需要服务器上的值,最简单的传递方式是sessionStorage,如果您不需要在浏览器关闭时保存它,或者localStorage,如果您需要更长的存储空间

第1页:

$("[name=device_type_id]").on("change",function() { 
  sessionStorage.setItem("device_type",this.value); 
}); 

第2页:

const deviceType = sessionStorage.getItem("device_type") || "Not passed";

【讨论】:

    【解决方案5】:

    您可以使用cookie将数据保存在客户端,然后在服务器端获取。

    PHP 代码(服务器端):

    if ($_COOKIE) {
        header('content-type: text/plain; charset=utf-8');
        print_r($_COOKIE);
        exit;
    }
    

    Javascript 代码(客户端):

    document.cookie = "name=yourname";
    document.cookie = "favorite_food=bakso";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多