如何获得响应跨域ajax

时间:2015-09-25 23:58:30

标签: php ajax dns response

我在服务器1上有这个代码

$("#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"; //"yourmail@yoursite.com";

//from email adress
$emailFrom ="contact@yoursite.com"; //"contact@yoursite.com";

//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-]+@([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 <jsparrow@blackpearl.com>' . 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>

如你所见,我将帖子数据发送到其他服务器,如果我点击联系表单上的发送没有任何反应...但电子邮件发送正常...所以我需要响应所以当我点击发送.. 。联系表单字段被清除...文本显示...消息已发送..

即时完成此代码的新手..所以欢迎一些帮助

1 个答案:

答案 0 :(得分:0)

我通过jsfiddle运行你的代码。

我收到此错误:阻止跨源请求:同源策略禁止在http://guara.webposicionamientoweb.com.mx/pluton/php/mail.php读取远程资源。 (原因:缺少CORS标题'Access-Control-Allow-Origin'。

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

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

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