$.post & AJAX 在服务器上不工作,但在本地主机上工作正常

Posted

技术标签:

【中文标题】$.post & AJAX 在服务器上不工作,但在本地主机上工作正常【英文标题】:$.post & AJAX is not working on server, but working fine in localhost 【发布时间】:2015-08-28 00:24:43 【问题描述】:

我刚刚将我的网站移到服务器上,结果被 $.post() 吓坏了,而 AJAX 无法在服务器上运行。

$.post() 总是返回空白数据。在这种情况下,您可以在下面的$.post() 示例中签入,当我alert(info) 时,它显示Array()

$(document).ready(function () 
    $("#faq").submit(function () 
        var data = $(this).serializeArray();
        $.post("worker.php", data, function (info) 
            $(".faq_status").fadeOut();
            $(".faq_body").prepend(info);
        );
        return false;
    );
);

所有$.post()AJAX 代码都在发生同样的事情。我不知道该怎么办。

这是我的 worker.php 进度:

$question = addslashes(htmlentities($_POST['user_question']));
$uip = $_SERVER['REMOTE_ADDR'];

if ($question == "") 
    echo "<p class='alert alert-danger faq_status'>Problem in posting your query. Please resubmit it.</p>";
    exit;


$day = date('d');
$month = date('m');
$year = date('Y');

$sql = "SELECT no FROM user_faq WHERE user_ip = '$uip' AND EXTRACT(MONTH FROM asked_time) = $month AND EXTRACT(DAY FROM asked_time) = $day AND EXTRACT(YEAR FROM asked_time) = $year";

$record = $conn->query($sql);

if ($record->rowCount() >= 2) 
    echo "<p class='alert alert-danger faq_status'>Problem in posting your query. please resubmit it.</p>";
 else 
    $sql = "INSERT INTO `user_faq`(`no`, `question`, `user_ip`,`asked_date`) VALUES (NULL,:que,:ip,Now())";

    $query = $conn->prepare($sql);
    $query->bindValue(":que", $question, PDO::PARAM_STR);
    $query->bindValue(":ip", $uip, PDO::PARAM_STR);

    try 
        $query->execute();
        echo "<p class='alert alert-success faq_status'>We have receive your question, answer will be posted here soon!</p>";
     catch (Exception $e) 
        echo "<p class='alert alert-danger faq_status'>Problem in posting your query. please resubmit it.</p>";
    

【问题讨论】:

您的 PHP 正在返回 text Array()(但更可能是 array()),并且可能返回 text/plain 的响应类型。 javascript 中没有任何东西会导致这种情况。通过查看开发人员工具中的网络请求监视器来验证响应。找出问题的“真正”根源后,确保包含相关代码。 能否提供网站链接? 显示你的 worker.php 代码。 请尝试更改您的错误消息,以便查看打印的错误。 (对每个错误使用唯一的消息) 将 PHP error_reporting 更改为 E_ALL,以便查看可能遇到的错误。 【参考方案1】:

您的帖子正在运行并在提交时返回此回复。

<p class='alert alert-danger faq_status'>Problem in posting your query. please resubmit it.</p>

将 Firebug extension 添加到 Firefox 以轻松调试您的 javascript。

【讨论】:

【参考方案2】:

本地主机上的某些配置或错误报告可能会抑制或忽略服务器上没有的警告。最有效的方法是:

1.检查控制台中与您的代码相关的任何 javascript 错误。

2.在代码中的可能行中回显某些内容并进行调试以查找脚本中断的位置。

3.如果找到断点,打开错误报告并检查是否 有任何警告/错误

【讨论】:

但奇迹是在用户访问 5 到 6 个页面之前它是如何工作的。一些网页浏览后出现问题。直到一切正常。 @VijayMakwana 当用户移动到第 5 或第 6 页时,您可以检查传递给脚本的输入吗?检查它是否被正确解析并且不为空或为空

以上是关于$.post & AJAX 在服务器上不工作,但在本地主机上工作正常的主要内容,如果未能解决你的问题,请参考以下文章

提交ajax表单并停留在同一页面上不起作用

POST &amp; GET &amp; Ajax 全解

POST 500(内部服务器错误) - Ajax 和 laravel 4

Ajax--发送POST请求 & POST设置请求体 & 设置请求头信息

ajax基础1--使用ajax发送get和post请求

一简单学习Ajax的GET & POST请求