2016-07-08 4 views
1

Я написал скрипт php, который выполняет SQL-запрос и выбирает список уникальных имен из базы данных.jQuery GET запрос на PHP с ошибкой, хотя PHP извлекает данные

Я делаю запрос AJAX GET с использованием jQuery скрипту php. Когда я проверяю ресурсы в консоли, я вижу, что вызывается php-скрипт, и когда я проверяю ответ, он содержит список уникальных имен.

Однако запрос jquery GET не работает и отображает сообщение об ошибке в консоли.

Может быть, проще и понятнее смотреть на мой код, так как я понятия не имею, в чем проблема. См. Код ниже.

PHP

<?php 

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

    $servername = "****"; 
    $username = "****"; 
    $password = "****"; 
    $dbname = "****"; 

    $conn = new mysqli($servername, $username, $password, $dbname); 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 
    $sql = "SELECT DISTINCT(name) FROM customer"; 
    $result = $conn->query($sql); 

    if ($result->num_rows > 0) { 
     while($row = $result->fetch_assoc()) { 
      echo json_encode(array('customer' => $row["name"])); 
     } 
    } else { 
     echo "0 results"; 
    } 
    $conn->close(); 
?> 

JS

$.ajax({ 
    type: 'GET', 
    url: 'getcustomers.php',   
    success: function(data){ 
    console.log(data); 
    }, 
    error: function() { 
    console.log('error'); 
    } 
}); 

В консоли это просто говорит error, то есть он выполнил функцию error.

Когда я загружаю php-файл в браузере, он отображает следующее.

{"name":"Peter"}{"name":"Alan"}{"name":"Mike"} 
+0

Вы можете включить ошибку, показанную на консоли? – madebydavid

+0

Просто запустите файл 'getcustomers.php' непосредственно из браузера и обнаружите ошибку –

+0

@SherinJose да, когда я запустил php-файл, все имена отображаются как ожидалось -' {"name": "Mike"} {"name ":" Alan "} {" name ":" Peter "}' –

ответ

3

Ваш ответ JSON не является допустимым. Вы печатаете каждую строку данных на каждой итерации. Так заменить заявление пока с этим,

if ($result->num_rows > 0) { 
    $return = array(); 
    while($row = $result->fetch_assoc()) { 
     $return[] = array('customer' => $row["name"]); 
    } 
    echo json_encode($return); 
} else { 
    echo "0 results"; 
} 
+0

это была проблема. топ человек шерин! мой php aint отлично, я должен быть честным. понять и получить его сейчас! –

+0

Рад, что я мог бы помочь :) –

+0

получит зелёный галочку, когда это позволит мне ;-) –

0

Учитывая сценарий возвращает какой-либо результат (я надеюсь, что вы пытались запустить его в Broswer), то вы можете использовать что-то вроде этого:

$.get('path/to/file/filename.php').done(function(response) { 
    $('#exampleDiv').html(response); 
}); 

Хотя общие ошибки, потому что вы должны указать каталог путь, если запрашиваемый php-файл находится за пределами текущего рабочего каталога.

0

изменить заголовок функции обработчика ошибок на следующее:

error: function (jqXHR, textStatus, errorThrown) { 

затем распечатать и посмотреть, что то, что ошибка

0

вы гулкой json_encode строку в стороне в то время как цикл, вместо того, что вам придется нажать строку в массиве, и в конце концов вы можете повторить JSon строку только один раз.

$outputArr = array(); 
if ($result->num_rows > 0) { 
     while($row = $result->fetch_assoc()) { 
      array_push(outputArr ,array('customer' => $row["name"])); 
     } 
    } else { 
     echo "0 results"; 
    } 
echo json_encode($outputArr);