Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   ajax не возвращает json данные (https://javascript.ru/forum/misc/65680-ajax-ne-vozvrashhaet-json-dannye.html)

sakada 02.11.2016 14:56

ajax не возвращает json данные
 
Добрый день!
Помогите, у меня ajax не возвращает json данные

sample.js
$(function() {

    $.ajax({
        type: "GET",
        dataType: 'json',
        url: "/residents/index.php",
        success:function(data){
	         console.debug(data);
                    console.debug(data);
                    alert(data);
	        }
    }).done(function(resident) {
        resident.unshift({ id: "0", name: "" });
        	   	
                $("#jsGrid").jsGrid({
                    height: "70%",
                    width: "100%",//100%
                    selecting: true,
                    filtering: true,
                    editing: true,
                    sorting: false,
                    paging: true,
                    autoload: true,
                    pageSize: 15,
                    pageButtonCount: 5,
                    controller: {
                    loadData: function(filter) {
                    return $.ajax({
                        type: "GET",
                        url: "/residents/",
                        data: filter
                                 });
                },
                insertItem: function(item) {
                    return $.ajax({
                        type: "POST",
                        url: "/residents/",
                        data: item
                    });
                },
                updateItem: function(item) {
                    return $.ajax({
                        type: "PUT",
                        url: "/residents/",
                        data: item
                    });
                },
                deleteItem: function(item) {
                    return $.ajax({
                        type: "DELETE",
                        url: "/residents/",
                        data: item
                    });
                                          }
                    },
           fields: [
                { name: "id", title: "id", type: "text", width: 150 },
                { name: "county", title: "Округ", type: "number", width: 50, filtering: false },
                { name: "dvk", title: "ДВК", type: "text", width: 200 },
                { name: "surname", type: "text", title: "Is Married", filtering: false },
                { type: "control" }
            ]
            });
           });//
        });


index.php
<?php
include "../models/ResidentsRepository.php";
$config = include("../db/config.php");
$db = new PDO($config["db"], $config["username"], $config["password"]);
$residents = new ResidentsRepository($db);
switch($_SERVER["REQUEST_METHOD"]) {
    case "GET":
     $result = $residents->getAllNo();
     break;
        
    case "POST":
        $result = $residents->insert(array(
            "name" => $_POST["name"],
            "age" => intval($_POST["age"]),
            "address" => $_POST["address"],
            "married" => $_POST["married"] === "true" ? 1 : 0,
            "country_id" => intval($_POST["country_id"])
        ));
        break;
    case "PUT":
        parse_str(file_get_contents("php://input"), $_PUT);
        $result = $residents->update(array(
            "id" => intval($_PUT["id"]),
            "name" => $_PUT["name"],
            "age" => intval($_PUT["age"]),
            "address" => $_PUT["address"],
            "married" => $_PUT["married"] === "true" ? 1 : 0,
            "country_id" => intval($_PUT["country_id"])
        ));
        break;
    case "DELETE":
        parse_str(file_get_contents("php://input"), $_DELETE);
        $result = $residents->remove(intval($_DELETE["id"]));
        break;
}
header('Content-Type: application/json; charset=utf-8');
//echo json_encode($result);
echo "Now the json encoded result: \n";
echo json_encode($result);
//var_dump($result);
//phpinfo(32);
?>

laimas 02.11.2016 15:42

Цитата:

Сообщение от sakada
echo "Now the json encoded result: \n";
echo json_encode($result);

Причина в зачеркнутом, ибо в результате это будет не JSON.

И header('Content-Type: application/json; charset=utf-8'); не обязателен так как явно указан тип принимаемых данных - dataType: 'json'

sakada 02.11.2016 21:38

Не помогло.
Возвращает ссылку с другими параметрами, а я не каких не задавал

laimas 03.11.2016 00:37

Что значит не помогло, я же вам не Аспирин предлагаю. По делу, коли серверный код обрабатывает только эти запросы, то со строки 8 должно быть:

header('Content-Type: application/json; charset=utf-8');
exit(json_encode($residents->getAllNo()));
break;


с удалением строк 36 - 41, ибо остальные запросы вообще не интересует ответ сервера, и сколько строк вставлено или обновлено возвращается не известно кому и зачем.

Что за ссылки возвращаются, это разбирайтесь сами посредством отладчика и анализа, ибо причиной могут быть ошибки на сервере и прочее. А валидный JSON не получится, если сервер вкупе с ним будет выплевывать клиенту и другие данные, даже отданных подряд две json-строки в итоге не есть JSON.

sakada 05.11.2016 14:37

Проблему решил.
Появилась новая.
Как совместить jquery с файлами bootstrap ?

laimas 05.11.2016 16:11

Что значит совместить? Они прекрасно "уживаются", сперва подключение JQ, потом BS.


Часовой пояс GMT +3, время: 23:48.