【问题标题】:Execute php from javascript从 javascript 执行 php
【发布时间】:2013-05-09 00:27:24
【问题描述】:

我在让一些 php 代码在我的应用程序中运行时遇到了一些问题。 设置相当简单:1 个按钮、1 个函数和 1 个 php 文件。

script.js

$(document).ready(function ()
{
    $("#btnTestConnectie").click(testConnectie);
});

function testConnectie()
{
    $.get("script/SQL/testConnection.php");
}

testConnection.php

<?php
echo "It works!";
php?>

根据这篇文章,它应该可以工作 (How do I run PHP code when a user clicks on a link?)

一些消息来源声称不可能通过 javascript 执行 php,所以我不知道该相信什么。

如果我错了,谁能给我指出一个可行的方法(从 javascript/jQuery 脚本连接到 mySQL 数据库)?

谢谢!

【问题讨论】:

  • PHP 在服务器端执行,js/jquery 在客户端执行。可以使用ajax调用php脚本,根据响应执行js。
  • 你的testConnectie 函数中有什么?它需要包含一个 ajax 请求,例如在您发布的链接中使用 $.get 的请求。
  • 根据那个帖子?您还没有完成帖子需要的任何操作,例如链接到 PHP 页面
  • 需要添加ajax调用testConnectie函数
  • er,您的 php 脚本中的结束标记不是错误吗?它应该只是?&gt;(或者根本不使用)。这肯定会导致您的脚本无法执行。

标签: php javascript jquery database connect


【解决方案1】:

您应该将所有函数放在文档就绪处理程序中:

$(document).ready(function(){
    function testConnectie() {
        $.get("script/SQL/testConnection.php");
    }

    $("#btnTestConnectie").click(function(e) {
        e.preventDefault();
        testConnectie();
    });
});

您必须打开浏览器的控制台才能看到来自服务器的响应结果。请确保在 testConnection.php 中将 PHP 右括号更改为 ?>。

另外一点,如果您正在测试 AJAX 功能,您必须在网络服务器上测试它们。否则你可能不会得到任何结果,或者结果可能不是你所期望的。

【讨论】:

    【解决方案2】:

    你可以看看jQuery http://api.jquery.com/load/的load()

    【讨论】:

      【解决方案3】:

      Javascript 由浏览器(客户端)运行,而 php 在远程服务器上运行,因此您不能只从 js 运行 php 代码。但是,您可以调用服务器为您运行它并返回结果而无需重新加载页面。这种方法称为 AJAX - 了解一下。

      我看到你正在使用 jQuery - 它有非常好的 API 用于此类调用。记录在案:here

      在你的情况下,js 应该是这样的:

      $(document).ready(function ()
      {
         $("#btnTestConnectie").click($.ajax({
             url: '/testConnection.php',
             success: function(data) {
                //do something
             }
         }));
      });
      

      [编辑] 假设您在服务器上有一个简单的脚本,该脚本根据 GET 中给出的 id(如 www.example.com/userInfo.php?id=1)从数据库中提供数据。在最简单的方法中,服务器将运行 userInfo.php 脚本并传递带有密钥 id 的超全局数组 $_GET(准确地说是 $_GET['id']=1)。在正常调用中,您会准备一些查询,呈现一些 html 并回显它,以便浏览器可以显示一个新页面。

      在 AJAX 调用中几乎相同:服务器收到一些调用,运行脚本并返回结果。不同之处在于浏览器不会重新加载页面,而是将此响应传递给 javascript 函数,让您随心所欲地使用它。通常你可能只会发送一个编码的数据(我更喜欢 JSON)并在客户端呈现一些适当的 html。

      【讨论】:

      • 这看起来很有用,但我不知道如何开始。有人有关于如何使用 Javascript + Ajax 连接到 MySQL 数据库(使用用户名/密码)来执行 SQL 语句的 sn-p 吗?
      • 一步一个脚印。 1) 学习如何使用 php 连接到数据库,2) 学习如何通过连接执行 sql 语句,3) 学习如何使用 jquery ajax 请求在 js 和 php 之间进行交互。一旦你能做到这三件事,你就可以把它们放在一起。
      【解决方案4】:

      您需要对您的 php 脚本回显的响应做一些事情。

      $.get("script/SQL/testConnection.php", function(data){
          alert(data);
      });
      

      如果您使用的是 chrome of firefox,您可以调出控制台,启用 xhr 请求日志记录并查看原始标头和响应。

      【讨论】:

      • 如果所有 OP 想要做的只是在服务器端运行脚本,您不必处理结果。您可以在浏览器的控制台中看到响应。
      【解决方案5】:
      $.get('script/SQL/testConnection.php', function(data) {
        alert(data)
      });
      

      你需要处理Ajax结果

      【讨论】:

      • 其实不用处理结果。如果它有效,您可以在控制台中看到结果。
      • 他不需要。但是是的,如果你想做除了运行 php 脚本之外的任何事情,处理 ajax 结果将是一个好主意。
      猜你喜欢
      • 1970-01-01
      • 2011-07-18
      • 1970-01-01
      • 2015-10-25
      • 2012-06-28
      • 2011-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多