2012-07-13 53 views
0

我在本地機器上開發了一個站點並且工作正常,但是在將其上傳到遠程主機後,ajax/json調用無法運行。PHP json/ajax不能在遠程主機上工作

我已經檢查過任何運行重定向之前寫入的html,唯一能找到的地方就是回顯json_encode($ return)。

這是問題嗎?如果有的話,是否有人知道我可以如何解決這個問題。?使用回聲的替代方法可能是?

感謝

用標籤來,我認爲這個問題可能是下面的代碼...

<script type="text/javascript"> 

$(document).ready(function() { 
    $("#addStory input[type=submit]").click(function(e) { 
     e.preventDefault(); 
     $.post('editor.php', $("#addStory").serialize(), function(result) { 
      alert(result.adminList); 
     }, "json"); 
    }); 
}); 

</script> 



<form name="addStory" action="" method="post" id="addStory"> 
    <input type="text" id="test_text" name="test_text" /> 
    <input type="submit" value="Submit" /> 
</form> 

而這裏的editor.php ...

<?php 

header('application/json'); 

$return = array(); 
$return['adminList'] = "Hello World!"; 
echo json_encode($return); 

?> 

的「你好世界「警報不會發生...

+1

'header('location:...)'call哪裏?我沒有在你的代碼中看到它。 – 2012-07-13 10:34:34

+0

這是一個好點...我選擇了一個不好的例子!但是,這顯示ajax沒有正常運行,因爲我在本例中使用了JavaScript重定向。如果用戶輸入正確的登錄信息$ return ['adminlist']填充javascript重定向值。希望這有點道理,我不知道如何最好地解釋。 – Tom 2012-07-13 10:40:47

+0

那你有什麼錯誤?有沒有JavaScript錯誤或您的PHP不返回?您需要更多信息才能得出答案。不過,我的答案在你的php中指出了一個錯誤。 – 2012-07-13 10:51:03

回答

2

你有一個問題是第二個header('application/json')位於第一個SQL查詢的輸出之後。只有在$row['column_name'] == 0爲真的情況下才是這種情況。

如果它總是返回json,那麼只需在php代碼的頂部設置這個權限以避免以後的混淆。

<?php 
    header('application/json'); 

    //all your sql etc here 

?> 

我在我們的討論中也注意到您的標題實際上是不正確的。它應該是

header('Content-type: application/json'); 

刪除它也可以,但這可能是一個壞主意,因爲這樣做的目的是告訴收件人需要什麼類型的數據。

另一點是,你現在的ajax應該真正利用jQuery中的getJSON()函數,它會自動給你一個json對象。

$.getJSON('example.php', function(data) { 
    //use data as a json object 
}); 
+0

如果將其作爲一個移動到頂部頁面和PHP停止運行。真正奇怪的是,它在我的本地機器上完美運行。 – Tom 2012-07-13 11:05:20

+0

@Tom我編輯了我的答案,希望這涵蓋了我們所談論的everthing,請注意標題更改,不知道您是否在聊天中收到了最後一條消息。 – 2012-07-13 14:08:17

相關問題