最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - $.ajax() returns syntax error: Unexpected end of json input - Stack Overflow

programmeradmin11浏览0评论

So I'm working on a website where I have to implement a chat, currently the whole thing is running on localhost. I'm getting this error:

SyntaxError: Unexpected end of JSON input

and can't figure out why. I have googled a little but can't find an answer, that actually works. I actually did this yesterday, on another computer and that worked super, but today it won't work and I can't figure out why.

Thank you for the great answers.

$(function() {
    updateChat("updateChat", null);

    $(".chat-form").submit(function(event) {
        event.preventDefault();
        if ($(".chat-form input").val() != "") {
            updateChat("sendMessage", $(".chat-form input").val());
        }
    });

    setInterval(function() {
        updateChat("updateChat", null);
    }, 3000);

    function updateChat(method, message) {
        $.ajax({
            type: "POST",
            url: "action/chat.php",
            data: {
                function: method,
                message: message
            },
            dataType: "json",
            success: function(data) {
                console.log(data);
            },
            error: function (request, status, error) {
                console.log(error);
            }
        })
    }
})

So I'm working on a website where I have to implement a chat, currently the whole thing is running on localhost. I'm getting this error:

SyntaxError: Unexpected end of JSON input

and can't figure out why. I have googled a little but can't find an answer, that actually works. I actually did this yesterday, on another computer and that worked super, but today it won't work and I can't figure out why.

Thank you for the great answers.

$(function() {
    updateChat("updateChat", null);

    $(".chat-form").submit(function(event) {
        event.preventDefault();
        if ($(".chat-form input").val() != "") {
            updateChat("sendMessage", $(".chat-form input").val());
        }
    });

    setInterval(function() {
        updateChat("updateChat", null);
    }, 3000);

    function updateChat(method, message) {
        $.ajax({
            type: "POST",
            url: "action/chat.php",
            data: {
                function: method,
                message: message
            },
            dataType: "json",
            success: function(data) {
                console.log(data);
            },
            error: function (request, status, error) {
                console.log(error);
            }
        })
    }
})
Share Improve this question edited Apr 12, 2017 at 18:55 markus rytter asked Apr 12, 2017 at 18:49 markus ryttermarkus rytter 1291 gold badge3 silver badges13 bronze badges 9
  • 1 Open developers console and see raw output of your php script. – u_mulder Commented Apr 12, 2017 at 18:51
  • Do you know how to do that from xampp? – markus rytter Commented Apr 12, 2017 at 18:53
  • Developers console is in your browser. – u_mulder Commented Apr 12, 2017 at 18:54
  • Im leaving SO for good. – Hyder B. Commented Apr 12, 2017 at 18:54
  • 2 Possible duplicate of SyntaxError: Unexpected end of JSON input – Funk Forty Niner Commented Apr 12, 2017 at 19:22
 |  Show 4 more comments

4 Answers 4

Reset to default 11

Most likely there's an error or warning in your PHP code being displayed, and because you are expecting only json, that causes the syntax error.

There are a few ways to find out what's going on:

  • open the developer console in your browser and see what the response is the network tab
  • check your PHP error log
  • temporarily change your dataType to html and you'll see your console.log(data)

I was getting this error due to my backend php function NOT returning a response as it should have been. It was returning nothing. My parent function that should have been returning the response was calling a child function that WAS returning a response, but the parent function wasn't passing that child return back to the ajax call.

Another possible culprit for these type of errors could be an improper python "shebang" on your back-end (server side) script.

In my particular case I had ajax call to python cgi script via Apache web server and I could not find a more descriptive error message at front-end debug tools. However, Apache logs indicated that the back-end script had problems importing a one of the python scripts because the interpreter did not recognize it. After checking the "shebang" of that back-end script sure enough it had the wrong interpreter specified because I just copied a template file over and forgot to modify it..

So, check your "shebang" at the top of your script to make sure it points to correct interpreter. Example:

For MVC controller you must return a valid JsON

return new JsonResult() { Data = new { test = 123 } };

instead of

return new JsonResult();
发布评论

评论列表(0)

  1. 暂无评论