【问题标题】:Contact from, PHP doesn't return string to AJAX联系方式,PHP 不向 AJAX 返回字符串
【发布时间】:2012-09-07 04:36:27
【问题描述】:

我的托管服务器上有 AJAX 联系表,不同域(另一个托管)上有 mail.php 文件。我正在尝试使用 jQuery 验证表单并使用 AJAX 发送电子邮件,但是当我调用 php 文件时,它会将电子邮件发送到邮箱,但不返回“成功”消息。相反,我得到“一个空字符串”。

我在js里

    $.ajax({
    type: 'POST',
    url: options.url,
    data: {subject:options.subject, name:$('#name').val(), email:$('#email').val(), message:$('#message').val()},
    success: function(data){
       if( data == 'success') {
           $('#callback').append(options.recievedMsg);
       } else {
           $('#callback').append(options.notRecievedMsg);
       }
    });

而php看起来是这样的

    <?php
    define( "RECIPIENT_NAME", "John Smith" );
    define( "RECIPIENT_EMAIL", "my.email@mail.com" );
    define( "EMAIL_SUBJECT", "Visitor Message" );

    $senderName = stripcslashes($_POST['name']);
    $senderEmail = stripcslashes($_POST['email']);
    $message = stripcslashes($_POST['message']);

    if ( $senderName && $senderEmail && $message ) {
        $recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . ">";
        $headers = "From: " . $senderName . " <" . $senderEmail . ">";
        $success = mail( $recipient, EMAIL_SUBJECT, $message, $headers );
    };

    echo 'success';

    ?>

当我签入控制台“数据”值时,它会显示(一个空字符串),而在 ajax 中如果函数我总是得到 false 和 notReceived 消息。

如何使 php 文件返回“成功”,如果(数据 == '成功')状态为真?我在这里错过了什么吗?

【问题讨论】:

  • 这个网址是什么:options.url,?它是正确的网址。请给出“options.url”的值,
  • 搜索“CORS”,因为您可能需要将其添加到服务器和 jQuet 调用中。还将结果作为“JSONP”而不是纯文本发回。或者作为最后一个选项,设置一个“代理”(您可以在您的托管服务器上放置一个 PHP 脚本吗?)。

标签: php ajax forms cross-domain contact


【解决方案1】:

由于same-origin policy,您无法向其他域发送 AJAX 请求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    相关资源
    最近更新 更多