当前位置: 首页 > 面试题库 >

从JavaScript调用php函数

奚曦哲
2023-03-14
问题内容

有没有办法可以通过JS函数运行php函数?

像这样的东西:

<script type="text/javascript">
function test(){
document.getElementById("php_code").innerHTML="<?php 
query("hello");       ?>";    
}
</script>

<a href="#" style="display:block; color:#000033; font-family:Tahoma; font-size:12px;"     
onclick="test(); return false;"> test </a>
<span id="php_code"> </span>

我基本上想运行php函数query("hello"),当我单击名为“ Test”的href时,它将调用php函数。


问题答案:

本质上,这就是AJAX的作用。页面加载,然后将事件添加到元素。当用户导致事件被触发时(例如,单击某些内容),您的Javascript使用XMLHttpRequest对象将请求发送到服务器。

服务器响应后(大概带有输出),另一个Javascript函数/事件为您提供了处理该输出的位置,包括像其他HTML片段一样简单地将其粘贴到页面中。

您可以使用纯Javascript“手动”完成操作,也可以使用jQuery。根据项目的大小和特定情况,仅使用普通Javascript可能会更简单。

在这个非常基本的示例中,myAjax.php当用户单击链接时,我们向其发送请求。服务器将生成一些内容,在本例中为“ hello
world!”。我们将把带有id的HTML元素放入output

JavaScript

// handles the click event for link 1, sends the query
function getOutput() {
  getRequest(
      'myAjax.php', // URL for the PHP file
       drawOutput,  // handle successful request
       drawError    // handle error
  );
  return false;
}  
// handles drawing an error message
function drawError() {
    var container = document.getElementById('output');
    container.innerHTML = 'Bummer: there was an error!';
}
// handles the response, adds the html
function drawOutput(responseText) {
    var container = document.getElementById('output');
    container.innerHTML = responseText;
}
// helper function for cross-browser request object
function getRequest(url, success, error) {
    var req = false;
    try{
        // most browsers
        req = new XMLHttpRequest();
    } catch (e){
        // IE
        try{
            req = new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e) {
            // try an older version
            try{
                req = new ActiveXObject("Microsoft.XMLHTTP");
            } catch(e) {
                return false;
            }
        }
    }
    if (!req) return false;
    if (typeof success != 'function') success = function () {};
    if (typeof error!= 'function') error = function () {};
    req.onreadystatechange = function(){
        if(req.readyState == 4) {
            return req.status === 200 ? 
                success(req.responseText) : error(req.status);
        }
    }
    req.open("GET", url, true);
    req.send(null);
    return req;
}

HTML

<a href="#" onclick="return getOutput();"> test </a>
<div id="output">waiting for action</div>

的PHP

// file myAjax.php
<?php
  echo 'hello world!';
?>

带有javascript库(jQuery等)

可以说,这是很多Javascript代码。当然,您可以通过拉紧这些块或使用更多简洁的逻辑运算符来缩短该时间,但是仍然有很多事情要做。如果您打算在项目中做很多这类事情,那么使用javascript库可能会更好。

使用上面相同的HTML和PHP,这就是您的整个脚本(页面上包含jQuery)。为了使它与jQuery的通用样式更加一致,我对代码进行了一些收紧,但是您可以理解:

// handles the click event, sends the query
function getOutput() {
   $.ajax({
      url:'myAjax.php',
      complete: function (response) {
          $('#output').html(response.responseText);
      },
      error: function () {
          $('#output').html('Bummer: there was an error!');
      }
  });
  return false;
}

暂时不要急于使用jQuery:添加任何库仍在向项目中添加数百或数千行代码,就像您已经编写了代码一样。在jQuery库文件中,您将找到与第一个示例类似的代码,以及更多其他代码。那可能是一件好事,可能不是。计划并考虑项目的当前规模以及将来的扩展可能性以及目标环境或平台。

如果这是您需要做的全部工作,请编写一次简单的javascript,然后就完成了。



 类似资料:
  • 问题内容: 如何从PHP调用JavaScript函数? 以下代码来自 xyz.html (单击按钮时),它在外部 xyz.js中 调用a 。这将调用wait.php。 和 wait.php 从那里以同样的方式从另一个PHP文件调用代码。 该否则工作正常,但它不会被调用我想要的方式。 问题答案: 就PHP而言(或者实际上,通常是一个Web服务器),HTML页面只不过是一个大字符串而已。 您可以使用P

  • 问题内容: 我想知道是否有可能仅在条件为真时在javascript中调用php函数。例如 有没有这样做的方法。如果是这样,请告诉我。谢谢 问题答案: 不能以上面说明的方式调用PHP函数。但是,您可以使用AJAX调用PHP脚本,代码如下所示。您也可以在这里找到一个简单的示例。让我知道您是否需要进一步澄清 使用jQuery 准系统Javascript替代

  • 问题内容: 我的网站上有一个PHP函数,需要花几秒钟才能完成。这样可以保留我不想要的整个页面。 页面加载并在div中显示结果后,可以使用jquery调用此PHP函数吗?还要在PHP函数完成之前显示ajax加载程序映像? 我一直在看jQuery.post,但似乎无法使其正常工作。 有人可以帮忙吗? 谢谢 问题答案: AJAX发挥了魔力:

  • 问题内容: 我想从Android应用程序调用服务器上的特定php函数,并发送一些参数。到现在为止,我实现了可以使用HttpClient打开php文件并执行向Json的数据传输,并在我的应用程序中显示该文件。所以,现在我希望能够调用特定的函数并向其发送参数,我该怎么做?谢谢。 问题答案: 这是我编写的用于使用JSON注册新用户名的一段代码: 如果您注意到: 在那一部分中,您可以发送参数。 该方法只是

  • 问题内容: 好的,我知道有人问过这个问题,但是我对PHP和JavaScript还是很陌生,直到我开始寻找这个问题的答案之前,我才听说过Ajax,所以不理解以前的答案。 我正在创建一个站点,该站点本质上是SQL数据库中的一堆视频,它一次显示一个视频,我想要一个下一个和上一个视频按钮。 但是我无法摆脱这种ajax的问题​​,所以我的问题更加简单。 我已经复制了确切的代码, 在我的文件中,我实际上只是对

  • 问题内容: 我使用PhoneGap开发了一个应用程序。我得到了一项在后台进行本地编码的服务(该服务和手机缺口应用程序在同一项目中)。不幸的是,我想从此服务中调用javascript函数。因此,我在网上搜索并创建了一些有趣的东西:创建一个扩展Plugin的类并在其中进行一些处理。然后我发现了这个: 我用此代码进行了测试,但是发生了一些错误: 这是我测试的方式: 在类c中,execute方法如下: 当