這是我正在使用的解決方案 - 問題解釋如下。使用jquery ajax調用php函數 - 從以前的答案奇怪的問題
我不明白爲什麼.getJSON()
失敗。我通過使用.post()
而不是JSON返回字符串作爲補償。
$.post('test.php', { action: 'test' }, function(data, status){
console.log(jQuery.parseJSON(data)); //form the JSON from a string after the POST
});
它現在可以正常工作,但會給瀏覽器和最終用戶帶來更多壓力。對於大規模部署來說,保存一點服務器CPU可能實際上會更好一些?無論如何。奇怪的小錯誤。
我用這個以前的答案開始使用我在做什麼:using jquery $.ajax to call a PHP function
和雙重檢查我的基本用法反對:http://api.jquery.com/jQuery.getJSON/和http://api.jquery.com/jQuery.post/
我有圓滿成功$ .post,但使用$ .getJSON時甚至沒有返回狀態。
澄清:我正在編輯這些功能提出問題。我正在測試可用的json數據,我已經處理了我只是添加了通過ajax請求調用php函數的功能。不要被我的奇怪的PHP回聲json_encode拋出。我的工作數據已經過驗證。
不管怎麼說,這裏是.js文件:
$.post('test.php', { action:'test' }, function(data, status){
console.log(data); //{"test_result":"success"}
console.log(status); //success
});
$.getJSON('test.php', { action:'test' }, function(data, status){
console.log(data); //nothing
console.log(status); //nothing
}).fail(function(jqxhr, textStatus, error) {
console.log(textStatus); //parsererror
console.log(error); //SyntaxError: Unexpected end of input
});
和我.PHP:
<?php
try {
if(isset($_POST['action']) && !empty($_POST['action'])) {
$action = $_POST['action'];
switch($action) {
case 'test':
echo json_encode(array('test_result' => 'success'));
break;
}
}
} catch(Exception $e) {
echo "ERROR: " . $e->getMessage();
}
?>
這成功地執行爲$。員額,但是當我切換到.getJSON $不再功能。有一個簡單的原因,爲什麼?
我發現很多帖子說它失敗,因爲數據是無效的JSON,但我檢查我的數據在瀏覽器中,然後複製/粘貼到jsonlint.com驗證,它說沒關係。我真的迷失了。 – Qwiso