2014-10-03 227 views
0

我有一个页面,我试图做一个AJAX调用,但它不工作,我很难理解为什么。我的电话是:AJAX URL问题...很奇怪

$.ajax({ 
    type: "GET", 
    url: "<relative URL>/index.php?action=x", 
    dataType: "JSON" 
}).success(function(person) { 
    alert(person.name) //alerts naem 
}); 
    return false; 
}); 

和PHP是:

<? 

if($_GET["action"] == "x"){ 

    $person = array("name"=>"Jon Doe","Reputation"=>"Good"); 
    header("Content-Type: application/json"); 
    echo json_encode($person); 
} 

?> 

我不认为这个问题是一个错误的URL,因为这是工作电话的C/P。在我看来(但我不确定)它选择重新使用原始加载源页面时的旧“操作值”。出于某种原因,它完全忽略了我的行动价值......?

任何想法?

+0

如果您使用浏览器的控制台,您是否看到正在发送的网络呼叫?如果是这样,你可以看看回应是什么。那会告诉你它是否真的返回一些东西。如果是这样的话,也许你可以用前面提到的评论者提到的.done替换.success(尽管这取决于你的jquery版本)。其次,你不能直接在php和jquery之间传递json。我相信你首先必须通过$ .parseJSON(人)传递返回值,那么你可以访问该属性作为person.name – lonewolf217 2014-10-03 15:02:26

+1

。成功是正确的,我一直在使用它 – 2014-10-03 15:03:51

+0

你不需要使用$ .parseJSON作为他已经将数据类型设置为JSON,并且他从服务器返回JSON – 2014-10-03 15:05:30

回答

0

尝试将PHP移入它自己的文件而不是index.php,我认为它是您的主要PHP文件。

$.ajax({ 
    type: "GET", 
    url: "/ajax.php?action=x", 
    dataType: "JSON", 
    success: function (person) { 
     console.log(person.name); 
    } 
}); 

这应该是一个单独的文件。例如,将其称为ajax.php。

<? 
// ajax.php 
if($_GET["action"] == "x"){ 

    $person = array("name"=>"Jon Doe","Reputation"=>"Good"); 
    die(json_encode($person)); 
} 

?> 

只要确保ajax.php在您的项目的路线,这应该工作。如果没有,请检查console.log。

0

尝试变量移动到“数据”:

$.ajax({ 
    type: "GET", 
    url: "<relative URL>/index.php", 
    data: "action=x", 
    success: function (person) { 
     console.log(person.name); 
    } 
}); 
0

既然你打电话index.php用GET参数,你可能来呼应json_encode ,然后继续到if语句后输出一切

试试这个吗?

<? 

if($_GET["action"] == "x"){ 

    $person = array("name"=>"Jon Doe","Reputation"=>"Good"); 
    header("Content-Type: application/json"); 
    echo json_encode($person); 
    exit; 

} 

?> 

我假设你在index.php如果语句下面更多的内容。如果是这样,那么将需要exit;语句,以便您只回显json,而不是if语句之后的任何内容。

ajax响应可以在Google Chrome的开发工具中的Network标签下查看。


比方说,你有没有exit;声明:

<? 

if($_GET["action"] == "x"){ 

    $person = array("name"=>"Jon Doe","Reputation"=>"Good"); 
    header("Content-Type: application/json"); 
    echo json_encode($person); 

} 

?> 

<html> 
<head></head> 
<body> 
...etc, etc 

下开发工具Ajax响应将是这个样子:

{"name":"Jon Doe","Reputation":"Good"}<html><head></head><body>... and so on

那么这将尝试解析由$ .ajax转换成JSON对象。

但是这是不可能的,因为<html><head></head><body>...是无效的JSON。

希望这会有所帮助!