jQuery Topics

Introducing jQuery API Search

Half-baked tutorials and plugins have been stacking up for months in my virtual kitchen, waiting for me to fire up the oven, finish the cooking, and spread them out on the table. For some reason, though, I’ve become less and less sure about whether I’ve put all the right ingredients into the mix. It’s irritating, to be sure, but I’m tired of fretting about it. I’m going to consider this the first of what I hope to be many “taste tests” — experiments in various degrees of completion thrown against the wall to see what, if anything, sticks.

As some of you may know, the online jQuery documentation went through a major overhaul in January of this year, coinciding with the release of jQuery 1.4. Packt Publishing “open sourced” the jQuery 1.4 Reference Guide that Jonathan Chaffer and I had been writing, allowing us to put its entire contents (and more) on api.jquery.com. Some of you may also know that the raw XML content of the site is available as a single file, which has allowed other sites such as jqapi.com and idocs.brandonaaron.net to provide alternative views of that content. But what most of you probably do not know is that the jQuery API has been available for quite some time as a searchable API that returns the results in JSON format.

Note: The reason you probably don’t know about it is that it’s half-baked. So, please go easy on it until some smart people have a chance to look under the hood at what I’m doing. Crazy abuse will surely bring it to its knees.

Motivation

I wanted to let people access the jQuery documentation via JavaScript from any other site and pull out exactly what is needed. I also wanted to play around with JSONP. This fits both of those desires.

URL

To access the searchable API, use the following URL:

http://api.jquery.com/jsonp/

Examples

You can tap into the API with one of jQuery’s Ajax methods. If you use $.get() or $.getJSON(), you’ll need to append “?callback=?” to the URL. With $.get(), you’ll also need to set the dataType argument to “jsonp”.

Find entries in the API that have “class” in their name and then do something with them:

JavaScript:
  1. $.get(‘http://api.jquery.com/jsonp/?callback=?’,
  2.   {name: ‘class’},
  3.   function(data) {
  4.     // do something with data
  5.   },
  6.   ‘jsonp’);

Find all effects-category entries and then do something with them:

JavaScript:
  1. $.getJSON(‘http://api.jquery.com/jsonp/?callback=?’,
  2.   {category: ‘effects’},
  3.   function(json) {
  4.     // do something with json
  5. });

You can, of course, also use the low-level $.ajax() method.

Find entries with a title that ends in “ajax”; append a link for each to the document body:

JavaScript:
  1.   url: ‘http://api.jquery.com/jsonp/’,
  2.   dataType: ‘jsonp’,
  3.   data: {title: ‘ajax’, match: ‘end’},
  4.   success: function(json) {
  5.     for (var i=0, len=json.length; i<len ; i++) {
  6.       var entry = json[i];
  7.       $(‘<a />’, {
  8.         href: entry.url,
  9.         html: entry.title
  10.       }).appendTo(‘body’);
  11.     }
  12.   }
  13. });

Search Types

The JSONP API is searchable by name, category, and version. Searching by more than one criterion returns results that match all of the criteria. All searches are case-insensitive.

  • Search by name:
    • Key: title
    • Value: the name of any jQuery method, property, or selector
    • Searches in: post title and post slug
    • Substitutions: Before querying the database, all “$” are converted to “jQuery” and each instance of one or more spaces is converted to a hyphen (“-”) for both the search values and the the post title and slug.
    • Default: all titles
  • Search by category name
    • Key: category
    • Value: category name
    • Substitutions: Before querying the database, each instance of one or more spaces is converted to a hyphen (“-”)
    • Searches in: category slug
    • Default: all categories
  • Search by version number
    • Key: version
    • Value: a jQuery version number
    • Searches in: category slug for all categories that are a child of the main “version” category
    • Default: all versions

String Matching

The “match” parameter lets you be confine the results to those that match the entire search term, or just the start or end of it.

  • Key: match
  • Value: one of “start”, “end”, or “exact” (for search by version number, one of “end” or “exact”)
  • Default: “anywhere”, except for version number, which has a default of “start”

Returned Data

Data is returned as an array of objects. Each item in the array is an object representing a single method, property, or selector. For example, a result with one item would have the following structure:

JavaScript:
  1. [
  2.   {
  3.     "url": "…",
  4.     "title": "…",
  5.     "type": "…", // "method", "property", or "selector"
  6.     "signatures": [
  7.     {
  8.       "added":"…",
  9.       "params": [
  10.       {
  11.         "name": "…",
  12.         "type": "…",
  13.         "optional": "…", // either "true" or an empty string
  14.         "desc": "…" // description of the parameter
  15.       }
  16.       ]
  17.     }
  18.     ],
  19.     "desc": "…", // short description
  20.     "longdesc": "…", // long description
  21.     "return": "…" // type of return value
  22.   }
  23. ]

Note that currently the examples/demos from each entry are not returned.

A (Fairly) Basic Demo

I put together a quick demo to give an idea of the API’s flexibility. Type something into the “Name” field in the form below—say, “ajax”—and watch as the results come back. Inside the “Advanced” area, choose the “Matching… End” radio button and search again to see how the results differ.

✚ Search Again

jQuery API Search A demonstration

Advanced

Matching
Include in Results

Clear Results

A Little Less Basic Demo

I replicated this search form on a test server and added back-button support with Ben Alman’s crazy delicious BBQ Plugin. Try out the demo.

But wait! There’s more!

I put the whole shebang (well, except for the server-side stuff) in a GitHub repo. Clone it, fork it, have your way with it.

But Wait! There’s Less!

As I mentioned above, this little project is incomplete. If you peek at the scripts, you’ll quickly spot some major chunks of code in need of refactoring. Also, had I but world enough and time, I’d use a nice templating system such as mustache.js or the jQuery Templates plugin to output the search results. But I’ll leave all that for another day (or another developer).

Read the full/original article at Learning jQuery

    Related Posts

    Comments are closed.

    jQuery Resources

    Learn more about jQuery

    jQuery News & Links

    I only just found out that the jQuery validation plugins has a validation rule called “remote” which can be used ...

    jQuery function to check if horizontal scroll is present – hasHScrollBar() – (or vertical check below also, util function to ...

    jQuery function to Set any DOM Element to Top View (bring to front) using CSS Z-Index property.

    Is it possible to declare arrays in JavaScript object literal notation? Example 1 – this works with arrays Declaration: Storage ...

    To get the a variables type using jQuery there is a jQuery function called .type() which returns “array”, “string”, “number”, ...

    In this post you can find tutorials which explain step by step different API use cases with jQuery like Google ...

    For valuable work on creation of sites you need a good comfortable editor necessarily. There are many requiring paid products ...

    Today we are sharing with you a collection of awesome jQuery Camera Photo plugins. They offer a range of image ...

    Back in the day, if you saw something that was animated on a website it was automatically assumed to be ...

    In this post, we have compiled a list of 10 jQuery HTML5 Audio players available today, most allow native audio ...

    jQuery Mobile is a powerful framework for making mobile web applications. But can we use it to convert existing desktop ...

    I have jotted a quick post on a Basic JavaScript Regular Expression Example to give beginners out there a taste ...

    In April 2012′s edition of Interestingly Random JavaScript, jQuery and Web Development we bring you some very cool stuff such ...

    In this post we are sharing you a roundup of 10 really jQuery plugins as of today. Pretty cool plugins ...

    As always expected from the jQuery community, the compilation we have for you today are some good and impressive recently ...

    A collection of jQuery PNG/JPEG/GIF plugins that enables image animation, cartoon-like background, etc… let them help you design displays for ...

    A collection of JavaScript/jQuery Zip/File/Compressor plugins that allows you to minify your JS code and compress your JS files ready ...

    Quick jQuery code snippet on how to keep an element in view. For demo scroll down on any page on ...

    Here is what I think is the best and most reliable way to load jQuery library and jQuery UI Libraries. ...

    jQuery code snippet which outputs all attributes of element using the default .attr() function on any dom element(s). usage: output:

    More Links & News

    Community Resources

    Use jQuery and the Google Maps API to create your own map application.

    Super cool and easy way to get stylish tooltips with jQuery.

    The right way to include the jQuery library in WordPress.

    Share a resource