2014-09-01 3 views
0

Я продолжаю получать ошибки обратного вызова на мой запрос AJAX, подобный этому:синтаксического анализа ошибок Jquery обратного вызова по запросу AJAX

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

+0

По-прежнему возвращает аналогичную ошибку синтаксического анализа, и это - SyntaxError: missing; перед выпиской 107360738680254322_1409592670289 ({"success": true}) lorenzo

+0

please show var_dump ($ res); и echo json_encode ($ res); – Andrii

0

У вас здесь есть ряд очевидных проблем.

В

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

Удалить запятую после longitude: lon,

Во-вторых, вы сказали, что возвращаемые данные будут представлять собой структуру dataType: 'jsonp' JSON данных, но вы не возвращает действительную структуру данных в формате 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 \t $ res ['success'] = true; \t \t \t} Else { \t \t \t \t $ Рез [ 'успех'] = false; \t \t \t} – lorenzo

0

Это недействительный json, который является очевидной проблемой.

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

Вы должны вернуть только кодированную строку json в качестве вывода.

Просто используйте: -

echo json_encode($res); 
exit; 
0

Мой вопрос заключается в том, что я не отключив раскладку по умолчанию и представление в моей CakePHP кода. Добавление этого «$ this-> autoRender = false;» поскольку первая строка кода в моей функции add() разрешила проблему. Ранее я пытался отключить его в контроллере, но его нужно было отключить только для этой функции.

Смежные вопросы