2013-04-08 53 views
0

这里是我的link_handler.php作为post方法操作。PHP-jquery在使用类时不会得到帖子返回

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; 
    }) 
}); 

任何人都可以在这里解释发生了什么事?

即时学习阿贾克斯在这里。

+0

在第二个'json_encode()'之后没有'exit()'。 – 2013-04-08 04:34:15

+0

打开Chrome,按F12然后按网络按钮,查看XHR请求(底部有按钮),然后发出请求。看看你有什么responde ..你有返回数据还是你有404? – Svetoslav 2013-04-08 04:38:24

+0

@Jack它不是必需的。脚本在那里结束。 – 2013-04-08 04:39:27

回答

0

最有可能的情况是,输出不是(只)JSON。

考虑以下语句:

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

所有这些声明可能会产生警告或通知,这会搞乱了JSON语法。您可以通过检查浏览器的网络选项卡来查看此内容并查找响应内容。

您应该解决您的代码可能产生的所有警告;您也可以查看logging the warnings

+0

yohoo ..你是对的.. 我的班上有一些警告。 这都是因为“”东西 感谢队友。 – 2013-04-08 06:01:01

0

尝试那些2个东西..

1日。为了您的$ _ POST链接设置完整路径没有你的域名,就好像它是

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

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

2nd。在你link_handler.php在第一行认沽:

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

如果收到responde在浏览器上,你的问题是你的PHP代码中..

第三名。在你的jquery把1警报('我们正在发布'); $ .post之前,以确保您的javascripts工作..

+0

好吧,如果我不在输入文本中插入任何链接,if(空)语句工作正常,它会在#success上显示错误。 但如果我在输入文本上插入链接(是的,我让它返回错误)没有其他消息#success – 2013-04-08 04:55:51

+1

测试你的PHP代码然后..你的功能是否有效?并在第二个json_encode之后放置出口。 – Svetoslav 2013-04-08 04:58:10

+0

是的,它是在劫持类:) 谢谢队友。 – 2013-04-08 06:01:36

相关问题