2014-09-01 57 views
0

我不斷收到類似這樣的對我的AJAX請求的回調錯誤:解析錯誤jQuery的回調

parsererrorError: jQuery21107497704593028268_1409589069770 was not called [object Object 

我已經嘗試了各種辦法,但我是相當新的jQuery的/ AJAX 。 這裏是我的要求:

$.ajax({ 
    type: 'GET', 
    dataType: 'jsonp', 
    crossDomain: true, 
    url: DEV_SERVER + "/check_in/add", 
    beforeSend: function() {$.mobile.loading('show'); allow_action=false;}, 
    complete: function() {$.mobile.loading('hide'); allow_action=true;}, 
    timeout: 10000, 
    data: { 
     time: timestamp, 
     bac: 0.01, 
     offender_id: offender_id, 
     latitude: lat, 
     longitude: lon, 
    }, 
    success: function(data){ 
     if(data.success){ 
      // TODO 
      alert("success"); 
     } else { 
      // TODO 
      alert("error"); 
     } 
    }, 
    error: function(jqXHR, status, error){ 
     //TODO 
     alert(status + error + jqXHR); 
     console.log(jqXHR); 
    } 
}); 

而在服務器端我回到這一點:

$return = $_REQUEST['callback'] . '(' . json_encode($res) . ')'; 
echo $return; 

任何幫助是極大的讚賞

回答

0

什麼,如果:

url: DEV_SERVER + "/check_in/add?callback=?" 

$return = $_GET['callback']."('".json_encode($res)."')"; 

和然後嘗試一些實驗:

$return = '<script>'.$_GET['callback']."('".json_encode($res)."');</script>"; 
+0

而這個$ return = $ _GET ['callback']。 '('。json_encode($ res)。')'; – Andrii 2014-09-01 17:22:59

+0

仍然返回一個類似的分析錯誤,並且這 - SyntaxError:missing;之前聲明 107360738680254322_1409592670289({「success」:true})<!DOCTYPE html> – lorenzo 2014-09-01 17:31:44

+0

請顯示var_dump($ res);和echo json_encode($ res); – Andrii 2014-09-01 18:30:19

0

這裏有很多明顯的問題。

data: { 
     time: timestamp, 
     bac: 0.01, 
     offender_id: offender_id, 
     latitude: lat, 
     longitude: lon, 
    }, 

longitude: lon,

其次刪除逗號,你說,返回的數據將是一個JSON數據結構dataType: 'jsonp'但不必返回一個有效的JSON數據結構。嘗試改變PHP腳本是這樣的: -

// assuming $res is an array 
$res['callback'] = $_REQUEST['callback']; 

$return = json_encode($res); 
echo $return; 

現在,它可能會是一個有效的JSON結構。

+0

$ res是一個數組,我正在填充它,如下所示:if($ this-> CheckIn-> save($ _ REQUEST)){ \t \t \t $ res ['success'] = true; \t \t \t}否則{ \t \t \t \t $ RES [ '成功'] = FALSE; \t \t \t} – lorenzo 2014-09-01 17:13:58

0

這不是一個有效的json,這是一個明顯的問題。

$return = $_REQUEST['callback'] . '(' . json_encode($res) . ')'; 
echo $return; 

您必須僅返回一個json編碼的字符串作爲輸出。

只需使用: -

echo json_encode($res); 
exit; 
0

我的問題是,我並沒有禁止在我的CakePHP代碼默認佈局和視圖。添加「$ this-> autoRender = false;」因爲add()函數中的第一行代碼解決了這個問題。我曾嘗試在控制器中禁用它,但只需要禁用該功能。