2016-04-25 2 views
0

This post предоставляет пример кода, используя в качестве примера список файлов серверов. Вот код, который я использовал:Javascript вызывает функцию php и возвращает результаты

<html lang="en-US"> 
<head> 
    <meta charset="UTF-8"> 
    <title>How to create form using jQuery UI</title> 
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/pepper-grinder/jquery-ui.css" media="screen" rel="stylesheet" type="text/css"> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js" type="text/javascript"></script> 

    <script type="text/javascript"> 
    $(function() { 
    $.get('getfilename.php', { dir : '/ajax1/' }, function(data) { 
     // you should now have a json encoded PHP array 

     $.each(data, function(key, val) { 
      alert('index ' + key + ' points to file ' + val); 

     }); 
    }, 'json'); 
    alert ("ok"); 
}); 

    </script> 
</head> 
<body> 
<h1>Get file names... </h1> 
</body> 
</html> 

getfilename.php

$dir = $_REQUEST['dir'] ; 
$dir = $_SERVER['DOCUMENT_ROOT'] . $dir; 

$filesArray = array(); 
$Counter = 0; 
$files = scandir($dir); 

foreach ($files as &$file) { 
    if ($file!='.' && $file!='..') { 
     $filesArray[$Counter] = $file; 
     echo $filesArray[$Counter].''; 
     $Counter++; 
    } 
} 

echo json_encode($filesArray); 

Моя проблема заключается в том, что Javascript оповещения alert('index ' + key + ' points to file ' + val); не удается отобразить что-либо на этой странице. Сценарий работает, потому что я получаю ответ в журнале консоли Firebug.

ajax.jsajax.phpindex.html["ajax.js","ajax.php","index.html"] 

Что мне нужно изменить на сценарий, чтобы вернуть эту информацию на страницу HTML, так что я могу использовать JSON для дальнейшей обработки?

Спасибо.

+0

какая вывод 'console.log (data);' в вашей консоли javascript? Есть ли какие-либо ошибки в консоли? – Robbert

+0

Спасибо, Робберт. Я использовал Firebug, и в разделе «Консоль» нет ошибок. – PeterK900

ответ

1

С помощью вашего отладки вы нарушили выход JSON в PHP. Так, удалить:

echo $filesArray[$Counter].''; 

Кроме того, перед любым выходом, вы должны добавить JSON заголовок:

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

В конце концов, ваш файл PHP должен выглядеть следующим образом:

$dir = $_REQUEST['dir'] ; 
$dir = $_SERVER['DOCUMENT_ROOT'] . $dir; 

$filesArray = array(); 
$files = scandir($dir); 

foreach ($files as &$file) { 
    if ($file!='.' && $file!='..') { 
     $filesArray[] = $file; 
    } 
} 
header('Content-Type: application/json'); 
echo json_encode($filesArray); 
+0

Поскольку он задает тип данных 'json', когда он называет' $ .get', заголовок 'Content-Type' является избыточным. – Barmar

+0

Ваш цыпленок старше яйца, Бармар. Если он задал заголовок PHP, то позже он не будет заботиться о 'dataType'. – skobaljic

+0

Но он уже имеет это в коде в своем вопросе, поэтому не нужно исправлять код. – Barmar

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