如何在JavaScript函数中激活PHP文件

时间:2010-08-24 13:27:38

标签: php javascript database

当我激活javascript函数时,我正试图将一些信息写入我的数据库。

我使用PHP和MySQL。如何打开.php文件,执行它并返回.js文件以使函数继续运行?

提前致谢。

5 个答案:

答案 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时):

(抱歉这么长的答案,希望它有所帮助)

答案 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");