【问题标题】:Calling a PHP file function in HTML with Angularjs使用 Angularjs 在 HTML 中调用 PHP 文件函数
【发布时间】:2020-04-04 07:51:56
【问题描述】:

我对我们的一个项目有疑问,该项目是由另一位精通 Angular js 的开发人员开发的,但我不是。因此,问题概述如下: 我们有一个每天使用 cron 运行的报告,它是在 PHP 中直接调用的,现在有时服务器端数据库会出错,我们必须手动运行此报告。

我有一个可用于制作按钮的 HTML 文件,但我不能在其中直接使用 PHP 函数。在这个项目中创建的所有其他 HTML 都使用 Angular js 控制器。我只想知道是否有办法让 PHP 函数在 HTML 中运行。我可以通读 angularjs,但有所有发布数据,我看不到获取 get 函数的方法。我在网上阅读了很多,但我没有得到任何地方。

如果有人指出我正确的方向,我将非常感激。

我正在寻找正确的 angularJS 成功回调语法,然后在 HTML 中调用它

PS:如果我问的是多余的问题,而不仅仅是给我一个负面的声誉,请告诉我。

例子:

PHP:public_html/XXXX/XXXX/php/cronHourly.php

function sendMyEmail($receiverName,$receiverEmail,$mySubject,$myMessage,$senderName,$senderEmail){
    //global $company,$companyPhone,$defaultEmail,$domain,$shopAddress,$stationeryPrefix,$siteStatus,$reportArray,$Host,$Port,$Username,$Password,$serverRoot;
$stationeryHeader = "<body bgcolor='#cccccc' leftmargin='0' topmargin='0' marginwidth='0' marginheight='0'><style>
body {
      font-family: Arial;
       font-size: 12pt;
}
</style>
<br>
<table id='Table_01' border='0' cellpadding='0' align='center' bgcolor='#FFFFFF' width='800'>

<tr><td width='20'></td><td><br>";

$stationeryFooter = "</td><td width='20'></td></tr>

</table></body>";

    //$mail = new PHPMailer();
     $mail = new PHPMailer(true);

    $mail->IsHTML(true);
    $mail->isSMTP();  // tell the class to use SMTP
    $mail->SMTPAuth   = true; 
    //$mail->SMTPSecure  = "ssl"; //Secure conection
    $mail->Host = 'xxxx.com';
    $mail->Port = 00;
    $mail->Username = 'postmaster@xxx.xom';  // SMTP username
    $mail->Password = ''; // SMTP password
    $mail->From = 'postmaster@xxx.com';
    $mail->FromName = $senderName;
    $mail->AddReplyTo($senderEmail, $senderName); 
    $mail->AddAddress($receiverEmail, $receiverName);//send a copy to the client
    $mail->Subject = $mySubject;
    $mail->WordWrap = 80;
    $mail->AddEmbeddedImage('x.png', 'csvimg', 'csv.png'); // attach file logo.jpg, and later link to it using identfier logoimg
    //$mail->AddEmbeddedImage($serverRoot.'/images/'.$stationeryPrefix.'Header.jpg', $stationeryPrefix.'Header', $stationeryPrefix.'Header.jpg');
    //$mail->AddEmbeddedImage($serverRoot.'/images/'.$stationeryPrefix.'Footer.jpg', $stationeryPrefix.'Footer', $stationeryPrefix.'Footer.jpg');
    //$headerImage = $serverRoot.'/images/'.$stationeryPrefix.'Header.jpg';
    $mail->Body = $stationeryHeader;
    $mail->Body .= $myMessage;
    $mail->Body .= $stationeryFooter;
    if(!$mail->Send()){
        echo '<br />Message FAILED to '.$receiverEmail;
        '.$reportArray[1],$company,$defaultEmail);
    }else{
        echo '<br />Message successfully sent to '.$receiverEmail;
    }//end if mail>send
}//end function sendMyEmail


?>

HTML:

<div class="mainpage">
<div>
<div class="row" style="padding:10px">

    <p> Click on this button Reports:</p>
   <button  ng-click=????" 
                        class="btn btn-default">Send Report</button>
</div>      

</div>
</div>

可能的 AngularJS:

$scope.getreportrta = function (key) {
    var req = {
        method: 'GET',
        url: '/XXXX/XXXX/php/cronHourly.php',
    };
    $http(req).then(function successCallback(response) {
        $scope.(*don't know how to fetch this*);
    }, function errorCallback(response) {

    });
}        

【问题讨论】:

  • 你会从php端得到错误,你可以看到引号错误。
  • 首先不知道angular js中这个PHP函数怎么调用,不知道那个语法对不对?
  • 您不需要public_html/XXXX/XXXX/php/cronHourly.php 来调用php,在您的服务器中您使用的是apache,并且您已将ip 或域指向您放置代码的特定文件夹,所以首先确保并从php 中找到url您创建的功能工作。
  • 出于调试目的,在successCallback 和errorCallback 中都添加console.log(response)。检查开发者控制台的网络选项卡以查看来自 XHR 的响应。
  • 我很感谢您的 cmets,但我想知道的是如何在成功的回调中获取函数,这又可以在 HTML 中调用,我不确定语法所以我不能在做出这些更正之前进一步查明原因。

标签: javascript php html angularjs


【解决方案1】:

所以,我已经找到了我的问题的答案,如果将来有人遇到并需要帮助,我会将其发布在这里:

angular-script.js

$scope.sendemail = function(info){
            var req = {
                method: 'GET',
                url: 'ReportManual/manualemail.php',
            };
            //Call the URL and handle succes or error callback  --> G.H.
            $http(req).then(function successCallback(response) {
                     alert('The Report has been sent.');
                    console.log(response);

            }, function errorCallback(response) {
                alert('Report has not been sent');
                 console.log(response);
            });

        }

HTML:

<div class="row" style="padding:10px">
  <p> Click on this button to send the Reports:</p>
   <button ng-click="sendemail()">SUBMIT</button>
</div>

PHP:manualemail.php

function sendMyEmail($receiverName,$receiverEmail,$mySubject,$myMessage,$senderName,$senderEmail){
    //global $company,$companyPhone,$defaultEmail,$domain,$shopAddress,$stationeryPrefix,$siteStatus,$reportArray,$Host,$Port,$Username,$Password,$serverRoot;
$stationeryHeader = "<body bgcolor='#cccccc' leftmargin='0' topmargin='0' marginwidth='0' marginheight='0'><style>
body {
      font-family: Arial;
       font-size: 12pt;
}
</style>
<br>
<table id='Table_01' border='0' cellpadding='0' align='center' bgcolor='#FFFFFF' width='800'>

<tr><td width='20'></td><td><br>";

$stationeryFooter = "</td><td width='20'></td></tr>

</table></body>";

    //$mail = new PHPMailer();
     $mail = new PHPMailer(true);

    $mail->IsHTML(true);
    $mail->isSMTP();  // tell the class to use SMTP
    $mail->SMTPAuth   = true; 
    //$mail->SMTPSecure  = "ssl"; //Secure conection
    $mail->Host = 'xxxx.com';
    $mail->Port = 00;
    $mail->Username = 'postmaster@xxx.xom';  // SMTP username
    $mail->Password = ''; // SMTP password
    $mail->From = 'postmaster@xxx.com';
    $mail->FromName = $senderName;
    $mail->AddReplyTo($senderEmail, $senderName); 
    $mail->AddAddress($receiverEmail, $receiverName);//send a copy to the client
    $mail->Subject = $mySubject;
    $mail->WordWrap = 80;
    $mail->AddEmbeddedImage('x.png', 'csvimg', 'csv.png'); // attach file logo.jpg, and later link to it using identfier logoimg
    //$mail->AddEmbeddedImage($serverRoot.'/images/'.$stationeryPrefix.'Header.jpg', $stationeryPrefix.'Header', $stationeryPrefix.'Header.jpg');
    //$mail->AddEmbeddedImage($serverRoot.'/images/'.$stationeryPrefix.'Footer.jpg', $stationeryPrefix.'Footer', $stationeryPrefix.'Footer.jpg');
    //$headerImage = $serverRoot.'/images/'.$stationeryPrefix.'Header.jpg';
    $mail->Body = $stationeryHeader;
    $mail->Body .= $myMessage;
    $mail->Body .= $stationeryFooter;
    if(!$mail->Send()){
        echo '<br />Message FAILED to '.$receiverEmail;
        '.$reportArray[1],$company,$defaultEmail);
    }else{
        echo '<br />Message successfully sent to '.$receiverEmail;
    }//end if mail>send
}//end function sendMyEmail


?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多