当我激活javascript函数时,我正试图将一些信息写入我的数据库。
我使用PHP和MySQL。如何打开.php文件,执行它并返回.js文件以使函数继续运行?
提前致谢。
答案 0 :(得分:3)
我觉得你可能有点困惑。 Javascript在浏览器中运行,在客户端的计算机上运行。 Php / MySQL在服务器上运行,响应HTTP请求,并为浏览器创建显示/运行的内容。
为了使两者动态通信,您需要了解如何从客户端上的javascript向服务器上的php脚本发送/接收HTTP请求。您还需要能够在javascript中处理响应。这种做法被称为AJAX。根据我的经验,最简单的方法是使用JSON和jQuery http://api.jquery.com/jQuery.getJSON/
答案 1 :(得分:2)
首先,不可能直接从JavaScript调用PHP函数 ,反之亦然。这是因为PHP是在服务器上运行的服务器端脚本,而JavaScript是在浏览器上运行的客户端脚本。
但是,有一种解决方案,使用一种名为“AJAX”的技术( A 同步 J avaScript a nd X ML),可用于从JavaScript向服务器发送请求。
例如,使用用户看到的“用户”页面和从JavaScript代码调用的“请求”页面,我可以编写以下代码:
userpage.php :
<!-- JavaScript code -->
<script type="text/javascript">
function sendRequestToServer()
{
// The XMLHttpRequest object is used to make AJAX requests
var ajax = new XMLHttpRequest();
// The onreadystatechange function will be called when the request state changes
ajax.onreadystatechange = function()
{
// If ajax.readyState is 4, then the connection was successful
// If ajax.status (the HTTP return code) is 200, the request was successful
if(ajax.readyState == 4 && ajax.status == 200)
{
// Use ajax.responseText to get the raw response from the server
alert(ajax.responeText);
}
}
// Open the connection with the open() method
// (the third parameter is for "asynchronous" requests, meaning that
// JavaScript won't pause while the request is processing).
ajax.open('get', 'requestpage.php', true);
// Send the request using the send() method
ajax.send();
}
</script>
<!-- HTML code -->
<button onclick="sendRequestToServer();">Send request!</button>
requestpage.php (此页面的输出将返回到您的JavaScript代码):
<?php
echo "Hello World!";
?>
当按下按钮时,此示例将向请求 requestpage.php 的服务器发送HTTP请求,其中服务器将执行一些服务器端代码并回显结果。然后,浏览器将从服务器接收数据并在脚本中使用它 - 在这种情况下,alert()
它。
一些资源:
您可能还想查看JSON编码,这是在客户端和服务器之间发送对象和数组的常用方法(特别是在使用AJAX时):
json_encode()
和json_decoder()
PHP函数(抱歉这么长的答案,希望它有所帮助)
答案 2 :(得分:0)
你需要AJAX,http://www.ajaxf1.com/tutorial/ajax-php.html使用PHP服务器的AJAX简单教程
答案 3 :(得分:0)
查找AJAX ...也考虑使用jQuery它有一个简单易用的ajax()函数。
答案 4 :(得分:0)
如果您尚未使用支持AJAX的框架(例如jQuery),您可以使用非常轻量级的XHR实现来发出HTTP请求。此请求可以将任何PHP资源(执行所需的数据库更新)作为目标。
我所知道的最小代码可以在这里找到:http://dengodekode.dk/artikler/ajax/xmlhttprequest_wrapper.php(丹麦语,对不起)
<script type="text/JavaScript">(function(){if(window.XMLHttpRequest)return;var o=null,s,
a=["MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.3.0","Msxml2.XMLHTTP","Microsoft.XMLHTTP"];
for(var i=0,j=a.length;i<j;s=a[i],i++){try{if(o=new ActiveXObject(s))break}
catch(e){}}window.XMLHttpRequest=o?function(){return new ActiveXObject(s)}:null;o=null})()</script>
请求:
var oHttp = new XMLHttpRequest();
oHttp.open("post", "http://www.domain.dk/page.php", true);
oHttp.onreadystatechange = function(){ myCallBack(oHttp) };
oHttp.send("id=123&noget=andet");