ClaireTaylor
ClaireTaylor

Reputation: 73

jQuery.ajax() v1.5 returns "parsererror" for json data

I have this function for getting a server id from a list. The function always returns "parsererror". I have looked at the JSON data returned but I cant seem to get it working, since jQuery have rewritten the ajax in v1.5.

function server_id()
{
    $.ajax({
        type: "GET",
        url: "http://localhost/server_list.php",
        dataType: "json", 
        success: function(data, status) {
             alert(status + "\n\n" + data.server_id);
        },
        complete: function(data, status){
                  alert(status);
        }
    });

}

server_list.php

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

    $output['server_id'] = '123';
    print json_encode($output);

In firebug Net >> XHR it reads it as JSON as it brings up the tab and the Response tab shows what is below.

{"server_id":"123"}

I have also tried setting the content type header like below but having no luck.

Content-type: application/json

UPDATED

I only get "parsererror" if the validation plugin is loaded from http://bassistance.de/jquery-plugins/jquery-plugin-validation docs.jquery.com/Plugins/Validation v1.7.

If you add the plug jquery automatically adds the jsonp callback to the query string even when you set to false or dont include the parms for jsonp. Very Strange

Any ideas on how to fix?

Thanks

Upvotes: 7

Views: 6924

Answers (3)

Ashley Taylor
Ashley Taylor

Reputation: 1

I suffered for days before finding this thread, thanks to those who pointed at jQuery.validate as the culprit.

In my testing it actually seems to be jquery.validate-vsdoc.js which is causing the issue, not the plugin itself, in case that's of any use to anyone else.

Upvotes: 0

skylar
skylar

Reputation: 31

The simple solution here seems to be that jQuery 1.5 is not compatible with 1.7 of the validation plugin. Downgrading to jQuery 1.4.x (or otherwise patching or removing the validation plugin code as philhag suggested) solves the issue.

Huge thanks to those on this thread who identified the conflict. It saved me a bunch of headaches having to debug the jQuery code.

Upvotes: 2

phihag
phihag

Reputation: 288190

You seem to want regular json communication (dataType is "json" instead of "jsonp" and server_list.php sends json), but you're setting jsonp options. Remove the jsonp and jsonpcallback lines. Setting jsonp to false does not mean you disable it!

When these two lines are commented out, everything seems to work fine.

Upvotes: 0

Related Questions