Wrox Programmer Forums

Need to download code?

View our list of code downloads.

| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read
BOOK: Professional JavaScript for Web Developers 3rd edition
This is the forum to discuss the Wrox book Professional JavaScript for Web Developers, 3rd Edition by Nicholas C Zakas; ISBN: 978-1-1180-2669-4
Welcome to the p2p.wrox.com Forums.

You are currently viewing the BOOK: Professional JavaScript for Web Developers 3rd edition section of the Wrox Programmer to Programmer discussions. This is a community of tens of thousands of software programmers and website developers including Wrox book authors and readers. As a guest, you can read any forum posting. By joining today you can post your own programming questions, respond to other developers’ questions, and eliminate the ads that are displayed to guests. Registration is fast, simple and absolutely free .
DRM-free e-books 300x50
Reply
 
Thread Tools Search this Thread Display Modes
  #1 (permalink)  
Old March 15th, 2013, 01:13 PM
Authorized User
Points: 139, Level: 2
Points: 139, Level: 2 Points: 139, Level: 2 Points: 139, Level: 2
Activity: 0%
Activity: 0% Activity: 0% Activity: 0%
 
Join Date: Aug 2003
Location: Spokane, WA, USA.
Posts: 25
Thanks: 0
Thanked 0 Times in 0 Posts
Default JSON/AJAX with ASP.Net

I read that ".getJSON is just shorthand for the ajax() function" because it only "wraps it" and doesn't do anything special on its own. I also read ".getJSON, like all ajax requests, is asynchronous by default, so your response will happen before the request completes. Therefore take a look at a synchronous request which will pause script execution until you get a response. However, the user cannot do anything until the response is received."

In this case executing an Ajax callback from an .aspx page causes the success function to run before the server request so it fails because of lack of data. The server access runs successfully afterwards when it is too late. I know this because I trace the code execution in Visual Studio's debugging mode, and by setting breakpoints, can observe what is processed when and check the values of variables.

When the server request executes this JSON string is built successfully:
{"LocCity":"MyCity","LocState":"WA","LocZip":"9876 5",
"NameFirst":"Test","NameFullname":"Test User","NameInit":"",
"NameLast":"User","NameTitle":"","Street":"123 W Main St"}

Ajax() is used so async:false can be set and so execution will be synchronous according to the above suggestion to try to force the url to be run first before the success function . The response fails indicating no value in the return variable and then the request executes creating a valid JSON object too late for the return response. This shows that the process still ran asynchronously despite async:false. I can only conclude that a system bug is
preventing execution from performing according to instructions. The code functions properly but asynchronous processing puts the "cart before the horse."

This data is built for the querystring Get:
Dim custId As String = "custId=" & Convert.ToString(custNum)

This registers the JavaScript event handler:
Protected Sub Page_PreRender(sender As Object, e As System.EventArgs) Handles Me.PreRender
If Not ClientScript.IsClientScriptBlockRegistered("get") Then
ClientScript.RegisterClientScriptBlock(Me.GetType( ), "get", "getData()")
End If

<script type="text/javascript">
function getData() {
var custId = $("#choice").text();
$.ajax({
url: "BookGetCust.aspx",
data: custId,
datatype: 'json',
type: 'get',
async: false,
success: gotData() *Inserting a variable argument as a prototype placeholder to match the success function parameter doesn't accomplish anything.
})
}
function gotData(cust) {
if (cust != null) {
$('#name').text() = cust.NameFullname;
$('#street').text() = cust.Street;
$('#city').text() = cust.LocCity;
$('#state').text() = cust.LocState;
$('zipcode').text() = cust.LocZip;
}
}
</script>

Ajax supposedly knows something is being returned so should make it available to the success function. This builds the JSON string on the server and Response.Write is supposed to return the string:
Imports System.Runtime.Serialization.Json
Partial Class BookGetCust Inherits System.Web.UI.Page
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Dim custNum As Integer = Convert.ToInt32(Request("custId"))
Dim custDLL As New ShopValidDLL
Dim street As String = custDLL.ValStreet(custNum)
Dim cust As New ShipCust
cust = custDLL.ShipCust(custNum, street)
Dim stream As New memorystream()
Dim serializer As New DataContractJsonSerializer(GetType(ShipCust))
serializer.WriteObject(stream, cust)
stream.Position = 0
Dim streamRdr As New StreamReader(stream)
Dim jsonString As String = streamRdr.ReadToEnd
Response.Write(jsonString)
Response.End()
End Sub
End Class
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
ajax in asp.net bhupesh ASP.NET 3.5 Basics 1 May 25th, 2011 09:52 AM
how do i write JSON-encoded in asp.net vb? nir987 ASP.NET 3.5 Basics 31 October 29th, 2010 04:26 AM
asp.net ajax tookit, included in Asp.net 3.5 PeterPeiGuo Visual Web Developer 2008 1 January 6th, 2009 04:25 AM
Turning a regular ASP.NET App into an AJAX ASP.Net donrafeal7 Ajax 2 August 31st, 2007 12:33 AM
Asp.net ajax everest General .NET 0 March 8th, 2007 12:21 AM



All times are GMT -4. The time now is 03:21 AM.


Powered by vBulletin®
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
© 2013 John Wiley & Sons, Inc.