SyntaxError: неожиданный токен <в JSON в позиции 0 - не знаю почему - PullRequest
0 голосов
/ 29 декабря 2018

Я получаю вышеупомянутую ошибку при попытке обновить мою базу данных.Я читал о том, почему это может быть, но я запутался, потому что я уже сделал CRUD для 2 других таблиц в php + javascript, поэтому я просто копировал вставку и переписывал для соответствующих строк и т. Д. (И я уже скопировал и вставил егонесколько раз, чтобы увидеть, если я только что сделал орфографическую ошибку)

Каждый журнал консоли работает до тех пор, пока этот бит response.json ().

// DELETE AND UPDATE SANDWICH

   
document.addEventListener('click', function(e){
    if (e.target.classList.contains('btnDeleteSandwich')){
        const sandwichId = parseInt(e.target.dataset.id);
        console.log(sandwichId);
        fetch("../backend/api-delete-sandwich.php?id="+ sandwichId, {
            method:'delete'
        })
            .then(function(response){
            return response.json();
            })
            .then(function(response){
                console.log(response);
                document.getElementById('sandwich'+sandwichId).remove();
            })
    }

    if (e.target.classList.contains('btnEditSandwich')){
        const sandwichId = parseInt(e.target.dataset.id);
        let sandwich;
        for (let i = 0; i<allSandwiches.length;i++){
            if (allSandwiches[i].id_sandwich==sandwichId){
                sandwich=allSandwiches[i];
            }
        }
        console.log(sandwich);

// * this is for filling in the update form with existing date but disabled for the moment 
        // const updateName = document.getElementById("updateName");
        // updateName.value = pizza.name;
        // const updatePizzaType = document.getElementById("updatePizzaType");
        // updatePizzaType.value = pizza.type;
        // const updatePizzaIngredients = document.getElementById("updatePizzaIngredients");
        // updatePizzaIngredients.value = pizza.ingredients;
        // const updatePizzaNormalPrice = document.getElementById("updatePizzaNormalPrice");
        // updatePizzaNormalPrice.value = pizza.n_size_price;
        // const updatePizzaLargePrice = document.getElementById("updatePizzaLargePrice");
        // updatePizzaLargePrice.value = pizza.l_size_price;

        document.querySelector('#btnUpdateSandwich').setAttribute('data-id', sandwichId);
        
    }
});

const btnUpdateSandwich = document.querySelector('#btnUpdateSandwich');

btnUpdateSandwich.addEventListener('click', function(){
    const formUpdateSandwich = document.querySelector('#formUpdateSandwich');
    const formUpdateSandwichData = new FormData(formUpdateSandwich);
    const sandwichId = parseInt(btnUpdateSandwich.dataset.id);
    console.log(formUpdateSandwichData);
    console.log(formUpdateSandwich);
    fetch("../backend/api-edit-sandwich.php?id="+ sandwichId, {
            method:'post',
            body:formUpdateSandwichData
        })
        .then(function(response){
        return response.json();
        })
        .then(function(response){
            console.log(response);
        })
        .catch(function(err){
            console.log(err);
        })
})

Я довольно новичок здесь, поэтому, если вам нужна дополнительная информация для решения проблемы, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 29 декабря 2018

Попробуйте проверить, чтобы убедиться, что ответ в порядке, и добавить улов в вашу первую цепочку обещаний.Ваш API может возвращать ошибку, которая не перехватывается.Я обновил ваш пример кодом из примера обработки ошибок, как указано в MDN документах для получения:

document.addEventListener('click', function(e){
if (e.target.classList.contains('btnDeleteSandwich')){
    const sandwichId = parseInt(e.target.dataset.id);
    console.log(sandwichId);
    fetch("../backend/api-delete-sandwich.php?id="+ sandwichId, {
        method:'delete'
    })
        .then(function(response){
            if(response.ok) {
                return response.json();
            }
            throw new Error('Network response was not ok.');
        })
        .then(function(response){
            console.log(response);
            document.getElementById('sandwich'+sandwichId).remove();
        })
        .catch(function(error){
            console.log('There has been a problem with your fetch operation: ', error.message);
        })
}
...