2014-06-14 2 views
-1

Я пишу приложение, и я не могу получить JSON с помощью Ajax. Или, лучше, при использовании XAMPP локально он работает правильно, но это не происходит, когда я загружаю все в свой домен. Что не так? PHP, похоже, работает нормально, я просто получаю функцию ошибки вместо успеха.Не могу получить JSON от Ajax

function groupGetDocsList() { 
    $.ajax({ 
     url: '../php/group_docs_list.php', 
     dataType: 'json', 
     success: function(data) { 
      docsList = $.parseJSON(data); 
      for(var i = 0; i < docsList.length; i++) { 
       docsListNames[i] = docsList[i].replace(/_/g, ' ').replace('.html', ''); 
      } 
      groupSearchDocs(); 
     }, 
     error: function(data) { 
      $('#group-docs-list-found').append('No documents found.'); 
      $('#group-docs-list').append('Error loading documents.'); 
     } 
    }); 
} 

Также без $.parseJSON он не работает.

Консоль показывает это (то есть не для моего кода, я полагаю, так как он появляется просто в том числе JavaScript JQuery):

event.returnValue is deprecated. Please use the standard event.preventDefault() instead. 

Код состояния является 200 и я получаю parseerror. Я подтвердил свой код JSON со многими онлайн-валидаторами: все они проверяют его правильно, за исключением одного, но я не могу понять, почему. Он блокирует себя в скобках (.

["BMC_Bioinformatics_2008_Oct_1_9_406_ver1.html","BMC_Bioinformatics_2008_Oct_2_9_407_ver1.html","BMC_Cardiovasc_Disord_2002_Mar_27_2_7_ver1.html","BMC_Cardiovasc_Disord_2003_Feb_6_3_2_ver1.html","BMC_Cardiovasc_Disord_2005_Aug_19_5_24_ver1.html","BMC_Cardiovasc_Disord_2005_Aug_25_5_25_ver1.html","BMC_Cardiovasc_Disord_2008_Dec_18_8_39_ver1.html","BMC_Geriatr_2004_Jul_2_4_5_ver1.html","BMC_Geriatr_2004_Oct_15_4_9_ver1.html","BMC_Geriatr_2006_Jan_27_6_3_ver1.html","BMC_Geriatr_2006_Jul_31_6_9_ver1.html","BMC_Geriatr_2007_Dec_19_7_29_ver1.html","BMC_Geriatr_2008_Aug_17_8_19_ver1.html","BMC_Med_Genet_2007_Mar_22_8_13_ver1.html","BMC_Med_Genet_2007_May_30_8_28_ver1.html","BMC_Med_Genet_2009_Jan_30_10_9_ver1.html","BMC_Ophthalmol_2008_Aug_17_8_15_ver1.html","BMC_Pediatr_2003_Sep_4_3_10_ver1.html","BMC_Pediatr_2004_Aug_7_4_15_ver1.html","BMC_Pediatr_2004_Aug_31_4_16_ver1.html","BMC_Pediatr_2004_Dec_14_4_24_ver1.html","BMC_Pediatr_2004_Feb_11_4_3_ver1.html","BMC_Pediatr_2004_Jul_8_4_12_ver1.html","BMC_Pediatr_2004_Sep_1_4_17_ver1.html","BMC_Pediatr_2005_Dec_5_5_45_ver1.html","BMC_Pediatr_2005_Jun_28_5_19_ver1.html","BMC_Pediatr_2005_Nov_9_5_40_ver1.html","BMC_Pediatr_2005_Sep_21_5_38_ver1.html","Breast_Cancer_Res_2005_Jul_27_7(**5)_R775-R779_ver1.html"**, 
"Breast_Cancer_Res_2005_Jun_16_7(5)_R669-R680_ver1.html" 
**]** 

2 части кода между ** и ** в конце JSON, где валидатор терпит неудачу и возвращает следующие ошибки:

Error:Expecting object or array, not number.[Code 3, Structure 2] 
Error:Strings should be wrapped in double quotes.[Code 17, Structure 3] 
Error:Expecting), after ].[Code 2, Structure 6] 
Error:Extra closing ][Code 14, Structure 6] 

Достаточно удалить ( перед тем 5 в предпоследней строке и JSON правильно проверен.

Я проверил много раз URL-адрес, это правильно. Код PHP:

<?php 
    header('Content-Type: application/json'); 
    $fileToString = file_get_contents('../documents/'); 
    $stringToArray = preg_match_all('/[(A-Za-z0-9_\-)]+.html(?=<)/', $fileToString, $matches, PREG_PATTERN_ORDER); 
    $jsonDic = json_encode($matches[0]); 
    echo $jsonDic; 
?> 

При открытии этого файла он правильно печатает json.

+2

не нужно использовать '$ .parseJSON', когда' dataType' установлен в 'json'. jQuery сделает это внутри. Звучит как проблема пути. Проверьте сам запрос в инструментах консоли браузера/dev. Может видеть статус, то, что отправлено и что возвращается (если есть) – charlietfl

+0

где ваш код PHP? –

+0

Вы посмотрели консоль? (консоль разработчика Chrome или расширение firefox Firebug) –

ответ

2

Сначала проверьте URL-адрес. Это красный флаг для меня, что есть .. в начале. Далее, как говорили другие комментаторы, используйте консоль браузера, чтобы увидеть какие-либо ошибки или если запрос был успешно выполнен.

+1

Вы были правы! Это был путь URL, который должен быть относительно страницы, на которой вызывается функция, а не где функция. Большое спасибо! – TheOldMe

+0

Отлично! Рад, что смог помочь! –

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