jQuery Ajax Post Json

Hi Experts. My function below is suppose to return json data that I am using to populate a div.  When I look at Fiddler.  My webservice call is passing the json data back correctly. What am I missing?


function OnLookup() {
                $.ajax({
                    type: "POST",
                    url: "http://<%=HttpContext.Current.Request.Url.Host%>/services/LocationService.asmx/ChangeLocation",
                    data: "{zipcode : '" +$('#edtzipcode').val()+"'}",
                    dataType: "json",
                    contentType: "application/json; charset=utf-8",
                    success: function(data){
                        alert(data);
                        $('#curlocation').innerHTML(data[1].City + "," + data[1].State);
                        $('#edtzipcode').val("");
                    },
                });
            }
ikeyserAsked:
Who is Participating?
 
ikeyserConnect With a Mentor Author Commented:
I have another issue but not ajax related but if someone can provide the answer i will provide all the points... my code below works except when it completes the ajax call it populate my label but then my panel slide again and my label value is gone.

$(document).ready(function () {

            var zip = $("#edtzipcode");
            $("#changelocation").click(function () {
                $(".panel").slideToggle("slow");
            });

            $("#cmdgo").click(function (event) {
                var bool = validateZip(zip);
                if (bool) {
                    OnLookup();
                }
                else {
                    alert("Zip Code is Invalid");
                    return false;
                }
            });

            function validateZip(obj) {
                var regexp = /^([0-9a-zA-Z])+$/;
                if (!(regexp.test(obj.val()))) {
                    return false;
                } else {
                    return true;
                }
            }

            function OnLookup() {
                $.ajax({
                    type: "POST",
                    url: "http://<%=HttpContext.Current.Request.Url.Host%>/services/LocationService.asmx/ChangeLocation",
                    data: "{zipcode : '" +$('#edtzipcode').val()+"'}",
                    dataType: "json",
                    contentType: "application/json; charset=utf-8",
                    success: function OnLookupComplete(result) {
                        data = result.d;
                        $("#curlocation").text(data.City + "," + data.State);
                        $("#edtzipcode").val("");
                    },
                });
            }

        });
0
 
amit_gCommented:
Could you show us the returned response from the server that you can see in Fiddler? Does your JSON data look like

http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?

Note the ({ in the beginning  and }) in the end.
0
 
ikeyserAuthor Commented:
The JSON data returns...
{"d":{"DataObject":{"LocationId":8,"EntityId":9,"EntityTypeId":2,"LocationName":"loc1","Address1":"1495 S. Wolf Rd.","Address2":null,"City":"Prospect Heights","ZipCode":"60070","ModifiedBy":2,"ModifiedDateTime":"\/Date(1279386329023)\/","CreatedBy":2,"CreatedDateTime":"\/Date(1279386329023)\/","LocationIdentifierId":null,"State":"IL","EntityState":1,"EntityKey":{"EntitySetName":"Location","EntityContainerName":"ResourceDBEntities","EntityKeyValues":[{"Key":"LocationId","Value":8}],"IsTemporary":false}},"Address1":"1495 S. Wolf Rd.","Address2":null,"City":"Prospect Heights","LocationName":"loc1","State":"IL","ZipCode":"60070","EntityId":9,"EntityTypeId":2,"HasChanged":false,"IsValid":true,"ValidationMessages":[]}}
0
Get 10% Off Your First Squarespace Website

Ready to showcase your work, publish content or promote your business online? With Squarespace’s award-winning templates and 24/7 customer service, getting started is simple. Head to Squarespace.com and use offer code ‘EXPERTS’ to get 10% off your first purchase.

 
leakim971PluritechnicianCommented:
What about :   data: { zipcode : $('#edtzipcode').val() },

(you post a json object and not a string)
function OnLookup() {
                $.ajax({
                    type: "POST",
                    url: "http://<%=HttpContext.Current.Request.Url.Host%>/services/LocationService.asmx/ChangeLocation",
                    data: { zipcode : $('#edtzipcode').val() },
                    dataType: "json",
                    contentType: "application/json; charset=utf-8",
                    success: function(data){
                        alert(data);
                        $('#curlocation').innerHTML(data[1].City + "," + data[1].State);
                        $('#edtzipcode').val("");
                    },
                });
            }

Open in new window

0
 
ikeyserAuthor Commented:
Sorry new to this...my web service is expecting a string value which is what I am passing.
0
 
ikeyserAuthor Commented:
Leakim971 - When I changed to data : { zipcode : $('#edtzipcode').val() },
I get an error when I make my ajax call...
{"Message":"Invalid JSON primitive: zipcode.","StackTrace":"   at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()\r\n   at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)\r\n   at System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize[T](String input)\r\n   at System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext context, JavaScriptSerializer serializer)\r\n   at System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData, HttpContext context)\r\n   at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.ArgumentException"}
0
 
Shinesh PremrajanEngineering ManagerCommented:

success: function(data){
                        data = $.parseJSON(string);
                        $('#curlocation').innerHTML(data[1].City + "," + data[1].State);
                        $('#edtzipcode').val("");
                    },

yopu need to parse the JSON to actually use the JSON data.

hoep this helps
0
 
leakim971PluritechnicianCommented:
>I get an error when I make my ajax call...

Are using DataContract & Co ? What is the language used for the webservice ? VB.Net or C#.Net
0
 
ikeyserAuthor Commented:
shinug - the .ajax call automatically parses the json data.  After debugging, I found the solution.

data[1].City does not exist.  What i ended up doing is

success: function(data){
                        result = data.d;
                        $('#curlocation').innerHTML(result.City + "," + result.State);
                        $('#edtzipcode').val("");
                    },


0
 
Shinesh PremrajanEngineering ManagerCommented:
There is no return value if the zipcode is valid.

Hope this helps
function OnLookup() {
                $.ajax({
                    type: "POST",
                    url: "http://<%=HttpContext.Current.Request.Url.Host%>/services/LocationService.asmx/ChangeLocation",
                    data: "{zipcode : '" +$('#edtzipcode').val()+"'}",
                    dataType: "json",
                    contentType: "application/json; charset=utf-8",
                    success: function OnLookupComplete(result) {
                        data = result.d;
                        $("#curlocation").text(data.City + "," + data.State);
                        $("#edtzipcode").val("");
                    },
                });
return true;
            }

Open in new window

0
 
ikeyserAuthor Commented:
Shinug - #curlocation is the field I am populating, not the zipcode field.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.