JQuery :: Testing For Error Condition In Returned JSON Formatted Data
Dec 14, 2010
I'm pretty new to jQuery and I'm using $.getJSON to submit some data to a PHP script which either returns 5 sets of json-formatted data or data to indicate an error condition (i.e., no data available) from the PHP database query. The callback routine handles the 5 sets of json-formatted data just fine (using $.each...) but I'm having trouble testing for either just a string with 'null' in it or a json-formatted data return of [{"error":"null"}].
My callback code for the second approach looks like this:
function handle_stores(data) {
if (data.error == "null") .....
But this test does not execute the following code for the 'true' condition, i.e., data.error == "null" never evaluates to 'true'.
Im trying to validate a form (easy) and POST it to a third party WCF service. I am able to validate and POST data to the service, but its returned data (in table format) keeps opening in a blank page with their url in the browser address bar. Can't have that, I need to grab the returned data and .append it to a div on my page. Here is what I have that FAILS
<script type="text/javascript"> $(document).click(function() { //cancel form
I'm having troubles with an existing J2EE application (which uses Dojo) and in which I'm gradually introducing jQuery. The specific issue is with the malsup Form plugin and the JSON returned from a form submission: the error callback is always called, regardless of what happens on the server side, and the error is always "parsererror". I'm using jQuery 1.4.2 and the 2.45 version of the malsup Form plugin. For example, given the following code:
$(document).ready(function() { var options = { dataType: 'json',[code]....
the server receives the submission and handles it without errors, then in the browser I always get the same alert from the processAddressEditSubmitError() function, with an "Invalid JSON" message:
I'm working on a script that calls my php file, checks the db and returns text. If the returned text="bad" then i want the var "bad" to be set to 1. at the bottom of my script, if anything has tripped bad=1 then it returns false and the form doesn't submit...everything works great except for this one piece so i was wondering if you guys might offer me some insight
Every parse example I have seen on the internet is the well formed;
jQuery.parseJSON( ' {"sid":"123455","client_id":"1","last_name":"Anderson","first_name":"Alan","institution_id":"1"} '); What is the easy way to get from this; {"posts":[{"post":
I am doing a few tests with javascript and oop. but one failed so i falled back to the way i usually do this but it still isnt working properly. i am using $.post() but instead of returning whatever is echoed in the php file like it does with all my other scripts it returns the content of the file:
Isnt returned in var data but the whole file is returned as a string.
The below code posts a couple of vars to a php file which sends back a json object containing (in the test case) one object called 'faves' with 2 variables (let's say called var1 and var2). I can't seem to access the variables after the ajax call. The result is always an 'undefined' error message. I've tried:
I am trying out $.ajax instead of getJSON for debugging purposes. Because getJSON did not report an error in IE (6,7 or 8) and I am trying to figure out why a jQuery plug-in is not painting my returned images to the screen in IE but is in other browsers. So I tried this. Interestingly enough, it hits the error event in IE but not firefox, safari and the rest and I don't know why (this code works great and renders my data just fine in FireFox and the rest). I know my returned json is valid:
I don't know what else to do to troubleshoot why IE is having so much trouble with the returned JSON or just executing the function(data) using either getJSON OR this. I have set the headers not the cache also in the response. IE refuses to enter my function(data) on the response.
Same result. Firefox and the rest had no issue. IE still exited the $.ajax and my error method kicked in. No rhyme or reason whatsoever and I tried the IE Dev tools... nothing. About the only thing I get is this: Line: 163 Error: System error: -1072896658.Line 163 which is simply the line: function() { alert("An error has occurred. try again."); This has got to be the most f*d up situation I've been in and I need to get this working! I just cannot understand why IE can't parse a getJSON or $.ajax response, that is impossible or else there would be a huge meltdown with jQuery.
I'm trying to assign the values from the JSON data returned when I run this code into an array that's outside the callback function. The data is multidimensional, and I have been able to use this data within the callback function. However I want to use it outside that function. i.e. the jsdata returned in the code below is to be used outside the function
Code: $.getJSON('../fxns/status.php',function(jsdata){ //do some stuff with JSON data or pass to global variable[code]..........
I've started working with the jQuery UI 1.8 Autcomplete recently with remote data. I was pleased with the ease of initial implementation, but before long I ran into a classic race condition.As I type, the search query gets more specific, so it takes less time for the server respond. As a consequence, it is possible for the old response to arrive after the most recent one. Obviously, this is producing undesirable effects.I'm a little frustrated that the plugin doesn't have a way to manage this. To me, it seems that it makes the "basic" remote data implementation unreliable in most real-world situations. It also seems as though this would be a common problem, but I've found very little literature on it.
I've found that autocomplete is a relatively new addtion to jQuery UI, so I've put the frustration aside and started my own widget which extends autocomplete to solve for three things: 1) race conditions; 2) animated open/close; 3) caching.The nature of this post is two-fold. Not only to share information I've gathered on the topic of race conditions with others who might be having the same trouble, but to (hopefully) gain some insight to how other people are solving for this.The first piece of this puzzle was that $.ajax() (and related methods) return an XMLHTTPRequest instance. As described at stackoverflow.com, this grants us the ability to use XMLHTTPRequest.abort() method. So I just keep a handle to the XMLHTTPRequest instance, and if it exists, call abort() before the next request is made.Using a firebug, I could see that the requests were being aborted as expected and the symptoms of the race-condition ceased. So far, so good... then I got to IE. Not so much.In IE, I was seeing run-time errors. The odd thing is that the run-time errors seemed to be coming from deep within jQuery UI, rather than my code yet commenting out the abort() avoided the run-times. After scratching my head for a while, I used the following simplified code to shed some light on the situation:[code]
In Firefox and Chrome, behavior is as expected - no alert box. However, in IE6 and IE8 (IE7 untested at this time), the success handler still fires! As it turns out, the run-time errors were because the response was undefined as it got passed through my success code path. My next thought was, "maybe I can just evaluate textStatus". Unfortunately, it turns out (as seen in the alert box) it contains the string "success".
I am trying to check for an element(theLink), in a page, but in my code below, testing for null is raising an error. I have tried both codes below and both give the same error, that this.iFrame.contentDocument.getElementById('theLink').childNodes[0].href is null.
I'm testing my webpage in IE8. In firefox it looks and runs greag, but in IE 8, one issue I'm having is this: I have a button that opens a popup window. Works fine in Firefox, but I get 'invalid argument' error in IE8 and the window does not open. I've enabled at a whim some scripting things in the Internet Options.
Here's the code. The "invalid argument" occurs on the window.open call.
In addition, is there any way to have that tile I've given it, "my Site..." appear in the window header? Right now it's not appearing at all in either browser.
The url is a very straightforward servlet that queries a database and returns either Y or N. That part is working fine. The first alert shows Y or N just as it is supposed to.
However, the second alert is always showing Turbo, as though the if statement is not able to compare properly. This is probably javascript rather than specific to jQuery, but can anyone see where I'm going wrong?
I have a JSON structure in API.When I call the API in my code it returns as the same JSON .I have to print this JSON result as table with pagination in Javascript. The table should be dynamic with previous and next buttons and the table should populate the results according to the JSON and each page should have 20 entries and then the remaining entries should go on the next page and I should be able to go back and forth in the table using previous and next respectively.tell me the exact code of how to start with getting JSON from the API and then write the JSON data in the form of dynamic table with pagination.
I'm new to Ajax. I'm getting a parse error in $.ajax. The xml file I am feeding it is dead simple, and validates just fine elsewhere. What else can I do to see what is wrong with the xml file?[code]...
How can I get more information about why $.ajax thinks that [Object XMLHttpRequest] is not an object?
I have a html file that I want to load, loop through the json data and for each json entry I want to add a new block of the html and insert the json data into the matching div/class of the html. json looks like this:
So for each json entry of name/age, I want to insert that into the html, and then add another row, until all json data has been fetched. After this I want to insert all of this into #box, which is just a divthat should contain that html. Looping like this obviously does not work, since I just keep replacing the same html through the loop.
So I'm loading the div#my_events by prepend(data) where "data" is another well styled div. Is there anyway to animate this returned data. Unfortunately I can't just specify a unique ID on the incoming data. So I was wondering how else I might be able to address this data I'm returning.
It is basically a topic list, with a modal that sends jquery to add a topic to the database, and returns the topic from the database, hides the modal, and displays the last added topic at the top of the topic list. Now I'd like it to do something slightly fancy like animate the color of the background to bring the user's attention to it.
Here is what I'm trying to do. I will pass a directory to a PHP script, that script will then return an array of filenames back to the javascript that called it. In the javascript I want to take the filenames returned and create links to them in an unordered list.
The PHP code to get the filenames is done and when I run the script I get an array that I have formatted into json... an example of the encoded array is as follows...
So here is the jquery I'm trying to use to get the filenames and create my links... But I must be missing something because my variable... data ... is empty... but status is Success.
In this dumb example, I'm unable to match the 'data' returned variable with the value I assigned to it in php (I can't manage to enter my 'do stuff'), yet its value is 'ok' if I display it. I have no problem to retrieve html code from php and inject it in my pages, but I can't test it as a regular javascript string.
What's wrong in this ? What have I missed about the 'data' format ? Do I have to 'cast' data to a javascript string (and if so, how ?)
I am currently using $.ajax to post to a Perl file that queries a webservice and returns XML. Running the Perl via command line confirms that XML is being returned with Content-Type: application/xml. However, regardless if I set the dataType parameter to "xml", "XML" or just use jQuery's intelligent guess, it appears that I am not getting any data returned to my function at all.
I've tried using the full $.ajax notation and the simplified $.get notation as follows:
and:
I have also tried using JQuery to perform a "GET" directly to the webservice which returns XML by default and still I get no data returned to my function.
Although I doubt it's browser-related, I have confirmed this in both Chrome (5.0.375) and Firefox (3.6.3).