2014-09-21 2 views
0

Я пытаюсь создать сценарий, который будет отправлять электронное письмо электронной почте нашей компании, когда кто-то нажимает кнопку. Html будет размещен на статической странице и будет делать все на стороне клиента, тогда как php-код будет размещен в другом домене.отправлять данные с помощью ajax, а затем отправлять по электронной почте

То, что я пробовал до сих пор.

HTML

<head><title>Report Errors</title> 
<script src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js' type='text/javascript'></script></head> 
<script>$(".c").click(function(){ 
var href = this.href; 
     $.ajax({ 
     url: 'http://example.com/m35.php', 
     type: 'POST', 
     data: { subject: href }, 
     success: function (data) { 
        setTimeout(function(){ 
        $(".container").html(data) 
        }, 1000) 
       } 
     }); 
    }) 
</script> 

<a href="http://link-to-be-sent.example.com" class="c">send</a> 
<div class="container">success</div> 

И код в m35.php файле -

<?php 

$mailTo = "[email protected]"; 
$mailFrom = "[email protected]"; 
$subject = $_POST["subject"]; 
$message = "someone reported the content in subject doubtful."; 


mail($mailTo, $subject, $message, "From: ".$mailFrom); 
?> 

EDIT: На основе комментариев, которые я хочу уточнить, что она даже не работает на одном домене и каталог , Однако этот тип кода также работает, но как это сделать без перезагрузки страницы с помощью javascript/jquery.

<form method="post" action="http://example.com/m35.php"> 
<input type="text" name="subject" id="subject" value=""> <input type="submit"> 
</form> 
+1

Это вопрос CORS, где вы не можете отправить данные на другой домен с помощью AJAX. – Scimonster

+1

Возможно, это может помочь? https://stackoverflow.com/questions/17318426/cors-cross-domain-ajax-without-jsonp-by-allowing-origin-on-server – parchment

+0

Спасибо за предложение @Scimonster, но это даже не работает в том же домене – Avadhesh18

ответ

2

Событие Click прикреплено перед элементом dom. Так что он не уволен. $(".c") - a элемент html, поэтому после нажатия он загрузит другую страницу. В этом случае запрос ajax может не дойти до сервера. Чтобы предотвратить это Js код должен быть в $(document).ready() случае и использовать return false; от события щелчка, чтобы блокировать загрузку страницы:

<script> 
$(document).ready(function(){ 
    $(".c").click(function(){ 
     var href = this.href; 
     $.ajax({ 
      url: 'http://example.com/m35.php', 
      type: 'POST', 
      data: { subject: href }, 
      success: function (data) { 
       setTimeout(function(){ 
        $(".container").html(data) 
       }, 1000); 
      } 
     }); 
     return false; // prevent load to another page 
    }); 
}); 
</script> 
+0

Спасибо, исправлено это, но он по-прежнему не отправляет электронное письмо. см. обновленный вопрос, где он работает при отправке через форму. – Avadhesh18

+0

Если вы нажмете элемент 'a' html, он загрузит другую страницу, и js-код может не выполняться. См. Правки, которые я сделал. – py3r3str

+0

Приобретено для этого. Спасибо, что все сработало. Вы знаете, как запускать оба html и php в разных доменах. – Avadhesh18

Смежные вопросы