2014-10-03 228 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。

希望這會有所幫助!