Uncaught TypeError: number is not a function when parsing JSONP response in jQuery ajax call

I am trying to grab data from a wordpress blog using the WP-API plugin. My js file is using jQuery to make ajax calls to the api. I need to use JSONP as the response type since I am trying to access cross domain information.

When the page loads, I get an error “Uncaught TypeError: number is not a function” and my response begins like this: /**/1([{"ID":231,"title":blahblahblah... with the error pointing at the “1” in the console.

Read More

This is the code I am using to try and grab the data and parse it:

function get_posts(num_offset) {
        offset = num_offset,
        url = 'http://www.example.com/wp-json/posts?_jsonp=1&filter[posts_per_page]=5&filter[offset]=' + offset;

        $.ajax({
            type: 'GET',
            dataType: "jsonp",
            url: url,
            success: function (data) {
                consol.log(data);
                console.log(url);
            }
        });

        // second ajax call to get the total number of posts
        $.ajax({
            type: 'GET',
            dataType: "jsonp",
            url: 'http://www.example.com/wp-json/posts?_jsonp=1&filter[offset]=-1',
            success: function (data) {
                console.log(data);
            }
        });


    }

I guess I need to know how I can remove the “Uncaught TypeError: number is not a function” error and then how I would be able to parse the JSONP data.

much thanks!

Related posts

Leave a Reply

1 comment

  1. You’re telling the other end that your callback’s name is 1, in your URL:

    http://www.example.com/wp-json/posts?_jsonp=1&filter[offset]=-1
    Here --------------------------------^^^^^^
    

    You want to use the name of the callback function you have on your page that you’re expecting to receive the JSONP response, which needs to be a validate identifier literal (so not 1).

    Because you’re using jQuery, it’s best by far if you let jQuery worry about what the callback name should be, by leaving off that query parameter entirely and letting jQuery add it. Since _jsonp is an unusual query string parameter name for this, you’ll need to tell jQuery what the parameter name is.

    $.ajax({
        type: 'GET',
        dataType: "jsonp",
        url: 'http://www.example.com/wp-json/posts?&filter[offset]=-1',
        // No _jsonp=1 here ------------------------^
        jsonp: '_jsonp',
        // ^^ new parameter here
        success: function (data) {
           console.log(data);
        }
    });