2013-05-14 112 views
0

我在使用我的应用程序工作时遇到了一些麻烦。 设置相当简单:1个按钮,1个功能和1个php文件。从javascript执行php

The structure

的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数据库)?

谢谢!

+4

PHP的)上的负载来看看(执行服务器端执行JS/jQuery的客户端。您可以使用ajax调用php脚本并根据响应执行js。 – 2013-05-14 16:14:45

+0

你的'testConnectie'函数中有什么?它需要包含一个ajax请求,就像在你发布的链接中使用'$ .get'一样。 – sgroves 2013-05-14 16:14:47

+1

根据那篇文章?你没有做任何事情需要的邮件,像链接到PHP页面例如 – 2013-05-14 16:15:03

回答

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

你需要处理Ajax的结果

+2

其实你不必处理结果。如果有效,你可以在控制台中看到结果。 – 2013-05-14 16:19:47

+0

他不需要。但是,是的,如果除了运行php脚本之外,如果你想做其他事情,处理ajax结果将是一个好主意。 – sgroves 2013-05-14 16:21:05

0

JavaScript是由浏览器(客户端)和PHP运行在远程服务器上运行,所以你不能仅仅从JS运行PHP代码。但是,您可以调用服务器为您运行它,并在不重新加载页面的情况下返回结果。这种方法被称为AJAX - 阅读它一段时间。

我看到你正在使用jQuery--它对这种调用有相当不错的API。据记载:here

在你的情况下,JS应该是相当喜欢:

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

[编辑] 比方说,你有一个供应基于ID数据库中GET给出的数据在服务器上简单的脚本(如www.example.com/userInfo.php?id=1)。在最简单的方法中,服务器将运行userInfo.php脚本,并使用密钥ID($ _GET ['id'] = 1)传递超全局数组$ _GET。在一个正常的调用中,你可以准备一些查询,渲染一些html并回显它,以便浏览器可以显示一个新页面。

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

+0

这看起来有用,但我对如何开始没有任何想法。 有人有关于如何使用Javascript + Ajax连接到MySQL数据库(使用用户名/密码)执行SQL语句的代码片段吗? – Matt 2013-05-14 16:34:50

+0

尝试通过我的编辑 - 应该更容易,我希望。 – Moby04 2013-05-14 17:07:41

+3

一步一个脚印。 1)学习如何使用php连接数据库,2)学习如何在连接上执行sql语句,3)学习如何使用jquery ajax请求在js和php之间进行交互。一旦你能做到这三件事,你可以把它们放在一起。 – sgroves 2013-05-14 17:10:53

0

你需要对你的php脚本回应的响应做些什么。

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

如果您使用的是Firefox的铬可以调出控制台,使XHR请求记录和查看原始头和响应。

+0

如果所有OP想要做的都是在服务器端运行脚本,则不必处理结果。您可以在浏览器的控制台中看到响应。 – 2013-05-14 16:22:38

+0

这就是我所说的。 – 2013-05-14 16:29:36

0

你应该把你的所有功能,在文件准备处理程序:

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

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

你必须有你的浏览器的控制台打开看看结果作为来自服务器的响应。请确保您在testConnection中将关闭的PHP括号更改为?>。PHP。

另一个需要注意的是,如果你正在测试AJAX函数,你必须在网络服务器上测试它们。否则,您可能得不到任何结果,或者结果可能不符合您的预期。