0

这是我的 link_handler.php 作为 post 方法操作。

require_once 'download_handler.php';

if ($_POST) {

    if (empty($_POST['link'])) {
        $mahar['success'] = false;
        $mahar['error'] = "you're not insert any link";
        echo json_encode($mahar); //work, show error string on #success
        exit();
    }

    $download = new Hijack($_POST['link']);
    $download->check_link();
    $download->execute();
    $mahar['success'] = $download->result['success']; // produce success(bool) = false
    $mahar['error'] = $download->result['error']; // produce error string : there's some error on parsing some stuff
    echo json_encode($mahar); //not work show nothing on #success
}

这是我的jQuery语法

$(document).ready(function() {
    $("#go").click(function() {
    $("#success").fadeOut();
        $.post('link_handler.php', {link: $("#url").val()},
        function(mahar) {
            if (mahar.success) {
                $("#success").html(mahar.link);
            } else {
                $("#success").html(mahar.error);
            }
        }, 'json');
        return false;
    })
});

谁能解释这里发生了什么?

我在这里学习ajax。

4

2 回答 2

0

试试这2件事..

第一个。对于您的 $_post 链接,设置没有您的域的完整路径,就好像它是

http://mydomain.com/link_handler.php - 把'/link_handler.php'

http://mydomain.com/something/link_handler.php - 把'/something/link_handler.php'

第二。在第一行的 link_handler.php 中:

exit(json_encode(array('success'=>"Your request is successfull")));

如果您在浏览器上得到响应,那么您的问题出在您的 PHP 代码中。

第三。在您的 jquery 中放置 1 个警报('我们正在发布');在 $.post 之前确保您的 javascripts 有效..

于 2013-04-08T04:49:51.857 回答
0

最可能的情况是输出不是(仅)JSON。

考虑这些陈述:

$download = new Hijack($_POST['link']);
$download->check_link();
$download->execute();
$mahar['success'] = $download->result['success'];
$mahar['error'] = $download->result['error'];

这些语句中的任何一个都可能产生一个警告或通知,这会弄乱 JSON 语法。您可以通过检查浏览器的网络选项卡并查找响应内容来检查这一点。

您应该解决您的代码可能产生的所有警告;您也可以考虑记录警告

于 2013-04-08T05:05:07.020 回答