Php AJAX URL问题…非常奇怪
我有一个页面,我正试图从中调用AJAX,但它不起作用,我不明白为什么。我的电话是:Php AJAX URL问题…非常奇怪,php,jquery,ajax,Php,Jquery,Ajax,我有一个页面,我正试图从中调用AJAX,但它不起作用,我不明白为什么。我的电话是: $.ajax({ type: "GET", url: "<relative URL>/index.php?action=x", dataType: "JSON" }).success(function(person) { alert(person.name) //alerts naem }); return false; }); PHP是: <? i
$.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的工作调用。在我看来,我不确定它是否选择重用最初加载源页面时的旧“操作值”。出于某种原因,它完全忽略了我的行动价值
有什么想法吗?试着将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。尝试将变量移动到“数据”中:
$.ajax({
type: "GET",
url: "<relative URL>/index.php",
data: "action=x",
success: function (person) {
console.log(person.name);
}
});
由于使用get参数调用index.php,因此可能会回显json_编码,然后在if语句之后继续输出所有其他内容
试试这个
<?
if($_GET["action"] == "x"){
$person = array("name"=>"Jon Doe","Reputation"=>"Good");
header("Content-Type: application/json");
echo json_encode($person);
exit;
}
?>
开发工具下的ajax响应如下所示:
{姓名:Jon Doe,声誉:Good}。。。等等
然后,$.ajax会尝试将其解析为JSON对象
但这是不可能的,因为。。。不是有效的JSON
希望这有帮助 如果使用浏览器的控制台,是否看到正在发送的网络呼叫?如果是这样的话,你可以看看答案是什么。这会告诉你它是否真的返回了一些东西。如果是这样的话,那么也许您可以将.success替换为.done,正如前面的评论员所提到的,尽管这取决于您的jquery版本。其次,不能在php和jquery之间直接传递json。我相信您首先必须通过$.parseJSONperson传递返回值,然后您可以作为person.name.success访问属性。如果正确,我会一直使用它,您不需要使用$.parseJSON,因为他已经将数据类型设置为JSON,并且他正在从服务器返回JSON。person.name出现了一个提示性编辑;还没有被批准。你错过了一个分号?alertperson.name//alerts naem这可能是原因吗?JavaScript在分号方面是可以原谅的。但你说得对,我下意识地加了一句!我会换的。
<?
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