2015-09-25 293 views
0

我已经在服务器这个代码1如何获得响应跨域AJAX

$("#send-mail").click(function() { 

    var name = $('input#name').val(); // get the value of the input field 
    var error = false; 
    if (name == "" || name == " ") { 
     $('#err-name').show(500); 
     $('#err-name').delay(4000); 
     $('#err-name').animate({ 
      height: 'toggle' 
     }, 500, function() { 
      // Animation complete. 
     }); 
     error = true; // change the error state to true 
    } 

    var emailCompare = /^([a-z0-9_.-]+)@([da-z.-]+).([a-z.]{2,6})$/; // Syntax to compare against input 
    var email = $('input#email').val().toLowerCase(); // get the value of the input field 
    if (email == "" || email == " " || !emailCompare.test(email)) { 
     $('#err-email').show(500); 
     $('#err-email').delay(4000); 
     $('#err-email').animate({ 
      height: 'toggle' 
     }, 500, function() { 
      // Animation complete. 
     }); 
     error = true; // change the error state to true 
    } 


    var comment = $('textarea#comment').val(); // get the value of the input field 
    if (comment == "" || comment == " ") { 
     $('#err-comment').show(500); 
     $('#err-comment').delay(4000); 
     $('#err-comment').animate({ 
      height: 'toggle' 
     }, 500, function() { 
      // Animation complete. 
     }); 
     error = true; // change the error state to true 
    } 

    if (error == false) { 
     var dataString = $('#contact-form').serialize(); // Collect data from form 
     $.ajax({ 
      url: $('#contact-form').attr('action'), 
      type: "POST", 
      data: dataString, 
      timeout: 6000, 
      error: function (request, error) { 

      }, 
      success: function (response) { 
       response = $.parseJSON(response); 
       if (response.success) { 
        $('#successSend').show(); 
        $("#name").val(''); 
        $("#email").val(''); 
        $("#comment").val(''); 
       } else { 
        $('#errorSend').show(); 
       } 
      } 
     }); 
     return false; 
    } 

    return false; // stops user browser being directed to the php file 
}); 

然后我对服务器2

<?php 

include 'functions.php'; 

if (!empty($_POST)){ 

$data['success'] = true; 
$_POST = multiDimensionalArrayMap('cleanEvilTags', $_POST); 
$_POST = multiDimensionalArrayMap('cleanData', $_POST); 

//your email adress 
$emailTo ="****@hotmail.com"; //"[email protected]"; 

//from email adress 
$emailFrom ="[email protected]"; //"[email protected]"; 

//email subject 
$emailSubject = "contacto teklife"; 

$name = $_POST["name"]; 
$email = $_POST["email"]; 
$comment = $_POST["comment"]; 
if($name == "") 
$data['success'] = false; 

if (!preg_match("/^[_\.0-9a-zA-Z-][email protected]([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $email)) 
$data['success'] = false; 


if($comment == "") 
$data['success'] = false; 

if($data['success'] == true){ 

$message = "NAME: $name<br> 
EMAIL: $email<br> 
COMMENT: $comment"; 


$headers = "MIME-Version: 1.0" . "\r\n"; 
$headers .= "Content-type:text/html; charset=utf-8" . "\r\n"; 
$headers = 'From: TEKLIFE <[email protected]>' . PHP_EOL . 
$headers .= "Reply-to: <$email>". 
    'X-Mailer: PHP/' . phpversion(); 


mail($emailTo, $emailSubject, $message, $headers); 

$data['success'] = true; 
echo json_encode($data); 
} 
} 

这个其他代码,这是接触形式在服务器上的代码1

<div id="successSend" class="alert alert-success invisible"> 
           <strong>Well done!</strong>Your message has been sent.</div> 
          <div id="errorSend" class="alert alert-error invisible">There was an error.</div> 
     <form id="contact-form" method="post" action="http://guara.webposicionamientoweb.com.mx/pluton/php/mail.php"> 
           <div class="control-group"> 
            <div class="controls"> 
             <input class="span12" type="text" id="name" name="name" placeholder="* Your name..." /> 
             <div class="error left-align" id="err-name">Please enter name.</div> 
            </div> 
           </div> 
           <div class="control-group"> 
            <div class="controls"> 
             <input class="span12" type="email" name="email" id="email" placeholder="* Your email..." /> 
             <div class="error left-align" id="err-email">Please enter valid email adress.</div> 
            </div> 
           </div> 
           <div class="control-group"> 
            <div class="controls"> 
             <textarea class="span12" name="comment" id="comment" placeholder="* Comments..."></textarea> 
             <div class="error left-align" id="err-comment">Please enter your comment.</div> 
            </div> 
           </div> 
           <div class="control-group"> 
            <div class="controls"> 
             <button id="send-mail" class="message-btn">Send message</button> 
            </div> 
           </div> 
          </form> 

,你看到我发的帖子DATAS到其他服务器,,如果我点击发送的联系人形式没有任何反应上......但电子邮件是发送确定...所以我需要的反应,所以当我点击发送...联系表格字段都会被清除......而出现的文字...邮件已发送..

IM完整newbee在这个代码..所以一些帮助是值得欢迎的

+0

向服务器1发出请求,并让服务器1使用cURL向服务器2发送数据 – charlietfl

+0

不知道该怎么做,,,即时阅读一些关于... tnks –

回答

0

我通过jsfiddle运行你的代码。

而且我得到了这个错误:跨来源请求阻止:同源策略不允许在http://guara.webposicionamientoweb.com.mx/pluton/php/mail.php读取远程资源。 (原因:缺少CORS头'Access-Control-Allow-Origin')。

在你的服务器代码,尝试添加:

header("Access-Control-Allow-Origin: *"); 

或更换*您HTML的域。这应该允许请求通过。

+0

服务器其付费主机,,,我不能改变它... –

+0

我没有免费托管有关设置标题的问题。我不确定付费托管会如何撤销权利。您是否尝试输入此代码? – user2676208