【问题标题】:Getting Javascript to talk to PHP让 Javascript 与 PHP 对话
【发布时间】:2010-08-26 12:31:56
【问题描述】:

在我的页面上,我有一个表格,这个表格有一个项目列表和一个编辑按钮。

单击编辑按钮时,我想用表格中该条目的特定信息填写表格。所有信息都存储在一个 mySQL 数据库中,可以通过 PHP 访问。

我需要我的 javascript 在编辑按钮上获取表格行标识符到 PHP,它将查询数据库,返回正确的值,然后 javascript 需要接收这些条目并填写表格。

我该怎么做?

我可以通过填充一个变量然后检查来引发一个 PHP 模拟“事件”:

if($variable){
     [do query]
}

但是,考虑到 HTML、JS 和 PHP 嵌套在同一个页面中,我如何从 Javascript 填充该变量?

【问题讨论】:

    标签: php javascript mysql html communication


    【解决方案1】:

    HTML、JS 和 PHP 并不是真正“在同一个页面”,如果您不这么想,它会有所帮助。

    您有一个 PHP 程序可以将 HTML 文档输出到浏览器。该文档中嵌入了 JS。

    为了从 JS 向 PHP 发送消息,您需要发出 HTTP 请求。这可以通过使用 XMLHttpRequest 或其他一些方法生成并提交表单来完成。

    XMLHttpRequest 是最常见的,它允许您在不离开页面的情况下执行此操作。这被称为 Ajax。您可以在 this question 中找到有关如何开始使用此技术的一些建议。

    您可能应该将访问 PHP 的数据库分离为一个可重用的块,该块首先在用于生成页面的 URL 和用于生成数据片段以更新它的 URL 之间共享(格式化此使用 JSON 的数据可能是个好主意)。

    【讨论】:

      【解决方案2】:

      我该怎么做?

      解决此问题的正常方法是在您的索引页面中添加一个超链接,该链接指向显示编辑页面的页面。所以你会有这样的 url:index.phpedit.php?id=42。你有什么理由不想这样做吗?

      【讨论】:

      • 我系统的风格是你有你的表格,然后与这个表格相关的所有操作(添加条目、编辑和删除条目)出现在“弹出窗口”中,这些弹出窗口只是 javascripted .style.display = "block" 和 .style.display="hidden"
      • 那么你的弹出窗口可能包含一个iframe,它指的是edit.php
      • 所以我能做的是让我的 table.php 在编辑时点击 table.php?edit=nameoffield 然后对编辑值做一个简单的 $_GET ?干杯
      • 你让我的想法走上了正轨,为此,我感谢你。我已经完成了一个使用 $_GET 并重新加载页面的解决方案,但它是一个非常好的解决方案,并且效果非常好。谢谢!
      【解决方案3】:

      看起来一些好的 ole ajax 对你有好处。一个 jQuery 实现会是这样的

         $('.button-class').click(function(){
              $.ajax({
            url: 'your-php-page.php?id=xxx', //Call your php page here
            success: function(data) {
              $('.table-row').html(data); // Update your page with the data returned
            }
          }); 
          });
      

      【讨论】:

        【解决方案4】:

        PHP 在页面加载时运行,并且在页面重新加载之前无法再次访问。您的解决方案是放置将更新的脚本,或运行您需要的任何查询,并使用Jquery Ajax 访问它

        【讨论】:

          【解决方案5】:

          您可以通过对服务器进行异步调用并等待服务器响应来做到这一点。这称为 AJAX(异步 Javascript 和 XML)。

          这是一个基础教程:http://www.w3schools.com/ajax/default.asp

          如果您想使用 AJAX,还有许多 JS 库(例如 JQuery 等)可以让您的生活更轻松

          【讨论】:

            【解决方案6】:

            使用 AJAX 拉取数据,查看Jeditable

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-11-09
              • 2018-10-11
              • 1970-01-01
              相关资源
              最近更新 更多