2013-05-08 71 views
0

我正在尝试使用发送电子邮件的Javascript/AJAX函数(使用PHP页面)。如何使用OnComplete?

功能是:

new Request({ 
    method: "post", 
    data: this, 
    onRequest: function() { 
     $('amCallMeBackForm').empty().addClass('amCallMeBackWait'); 
     $('callback').setStyle('background', 'url(\'http://www.mysite.it/modules/mod_amcallmeback/assets/sfondo_callback.png\') no-repeat transparent'); 
     $('callback').setStyle('height', '73px'); 
    }, 
    onComplete: function(response) { 
     $('amCallMeBackForm').removeClass('amCallMeBackWait'); 
     $('amCallMeBackForm').addClass('amCallMeBackSent'); 
     alert(response); 
    } 
}).send(); 
}); 

它工作正常,但如果我这个代码我不能管理从PHP页面,则响应:

<?php 
class modAmCallMeBackHelper 
{ 

function send($params) { 
    // Check for request forgeries 
    JRequest::checkToken() or die('Invalid Token'); 
      // get data 
    $name =  JRequest::getVar('name', ''); 
    $rif =  JRequest::getVar('rif', ''); 
    $phone = JRequest::getVar('phone', ''); 
    $uri =  JRequest::getVar('uri', ''); 

      // get module params 
    $subject = $params->get('mail_subject'); 
    $reciptient = explode(',', $params->get('receipt_email')); 
    $app =  JFactory::getApplication(); 
    $sender = array($app->getCfg('mailfrom'), $app->getCfg('fromname')); 

      // make email 
    $Body = '<strong>Azienda:</strong> '.$name."<br />"; 
    $Body .= '<strong>Riferimento:</strong> '.$rif."<br />"; 
    $Body .= '<strong>Numero di telefono:</strong> '.$phone."<br />"; 
    $Body .= '<strong>Pagina da cui &egrave; stato richiesto il contatto:</strong> <a href='.$uri.'>'.$uri."</a>"; 

    $mailer =& JFactory::getMailer(); 
    $mailer->setSender($sender); 
    $mailer->addRecipient($reciptient); 
    $mailer->setSubject($subject); 
    $mailer->isHTML(true); 
    $mailer->Encoding = 'base64'; 
    $mailer->setBody($Body); 
    if ($name == '' || $rif == '' || $phone == '' || $name == 'Azienda' || $rif == 'Riferimento' || $phone == 'Telefono') { 
    } else { 
    $send =& $mailer->Send(); 
    } 

    if ($send != true) { 
     return 'no'; 
    } else { 
     return 'ok'; 
    } 
} 

    } 
    ?> 

当显示警报(响应)我可以从页面看到整个html代码(包含),但我无法仅显示PHP页面中的“返回”。

我在做什么错?

您可以在这里查看我的问题的一个例子:http://www.sevenit.it(3秒后在页面右上角的检查)

感谢

+0

我没有看到代码中指定PHP脚本路径的任何地方。除非路径/ url在'Request'对象的代码中硬编码,否则该对象可能会尝试发布到'/'页面,该页面会按原样返回主页的HTML内容。 – 2013-05-08 09:16:18

+0

我认为这是因为它调用了一个内部的Joomla句柄页面,它接收数据。无论如何,表单动作设置为<?php echo $ _SERVER ['REQUEST_URI']; ?>。你认为我应该指定的网址? – Pepozzo 2013-05-08 09:47:45

回答

1
alert(response.responseText); 

会去相信的方式。

编辑: 或者你可能会想要做的是:

$('#amCallMeBackForm').html(response.responseText) 

不是100%肯定你问什么。

+0

谢谢马修的快速回复。 两种方法都适合我!但如果我按照您的建议设置,则会收到包含“未定义”的警报。 关于我的问题,我试图让更容易理解。当我完成该表单时,我点击提交按钮,表单中的所有数据都会发送到发送和发送电子邮件的PHP页面(或者如果发生错误,则不会发送)。如果出现错误,该页面将返回“ok”或“no”。现在,我想只检索“ok”或“no”响应来在表单面板上显示自定义消息。 谢谢! – Pepozzo 2013-05-08 09:39:47

+0

啊,你可能会想''回到''echo' – 2013-05-08 09:55:32

+0

已经完成,并且和以前一样。始终“未定义”。 – Pepozzo 2013-05-08 10:00:00

相关问题