www.webdeveloper.com
Results 1 to 3 of 3

Thread: AJAX everything works... except it doens't...?

  1. #1
    Join Date
    Jun 2010
    Posts
    1

    Question AJAX everything works... except it doens't...?

    Ok I tried to to post this once already, but I can't find it, so sorry if this is a repost. I am new to AJAX and Java Script but I learn quick. I am trying to create a HTML page that calls to a php script for a form onload. The php script echos the form back to the js and it is suppose to insert it into the page. I am using Firebug in firefox to debug, trace, etc and everything seems like it is working except the form does not get entered into the page. I need some help.

    Here is my JS code:
    Code:
    // Get the HTTP Object
    function getHTTPObject(){
    	if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");
    	else if (window.XMLHttpRequest) return new XMLHttpRequest();
    	else {
    		alert("Your browser does not support AJAX.");
    	return null;
    	}
    }
    
    // Apply changes to the form
    function setOutput(){
    	if(httpObject.readyState == 4){
    		word = httpObject.responseText;
    		document.getElementById('email_form').innerHTML = word;
    	}
    }
    
    // load the initial form from php back side
    function EFload(){
    	httpObject = getHTTPObject();
    	if(httpObject != null) {
    		httpObject.open("GET", "emailform.php?app=start", true);
    		httpObject.send(null);
    		httpObject.onreadystatechange = setOutput();
    	}
    }
    Here is my PHP code:
    Code:
    <?php
    	if (isset($_GET['app'])) {
    		if($_GET['app'] == "start") {
    			if (!isset ($error)){$error = "";}
    			$xform = getform($error);
    			echo $xform;
    		}
    		else {
    			echo "<div class=\"error\">There seems to be an Issue loading the Email Form.</div>";
    		}
    		
    	}
    	function getform($error) {
    		$err = 'class="error"';
    		if (isset($error['email'])){
    			$error_email = $err;
    		}
    		else {
    			$error_email = '';
    		}
    		
    		if (isset($error['comments'])){
    			$error_comments = $err;
    		}
    		else {
    		$error_comments = '';
    		}
    		$form =
    '<table id="emailform_table">
    	<tbody>
    		<tr>
    			<td class="label">
    				<label' . $error_email . 'for="email">*Email Address</label>
    			</td>
    			<td class="field">
    				<input id="email" type="text" size="20" maxlength="80" name="email">
    			</td>
    		</tr>
    		<tr>
    			<td class="label">
    				<label' . $error_comments . 'for="comments">*Message</label>
    			</td>
    			<td class="field">
    				<textarea id="comments" rows="6" cols="16" maxlength="1000" name="comments"></textarea>
    			</td>
    		</tr>
    	</tbody>
    </table> <input type="submit" value="Submit"> * = required Field';
    		return $form;
    	}
    ?>
    Here is my HTML code:
    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    	<head>
    		<title>Test</title>
    		<script type="text/javascript" src="emailform_script.js"></script>
    		<link media="screen" type="text/css" href="style.css" rel="stylesheet">
    	</head>
    	<body onload="EFload()">
    		<div id="page">
    			<div id="head">
    				<div id="title">
    					<h1>Zan's Email Form Test Page</h1>
    				</div>
    				<div id="tl2">
    					<h3>bla bla bla</h3>
    				</div>
    			</div>
    			<div id="sidebar">
    				<div class="sb_item">
    					<p>Site created by <a href="http://www.zanahade.com"> Zanahade</a></p>
    				</div>
    				<div id="email_form" class="sb_item">
    					email form
    				</div>
    				<div class="sb_item">
    					<p>Insert some random cool thing here</p>
    				</div>
    			</div>
    			<div id="main">
    				Main page stuff... bla bla bla
    			</div>
    		</div>
    	</body>
    </html>

  2. #2
    Join Date
    Mar 2010
    Posts
    2,803
    Some of the problems I see are:

    1) your onreadystatechange function is in the wrong spot.

    2) I'm pretty sure that "httpObject.onreadystatechange = ..." is also in the wrong spot.

    Maybe use this w3schools ajax function example as a guide to fix and debug your code.

  3. #3
    Join Date
    Jun 2007
    Posts
    667
    Quote Originally Posted by Zanahade View Post
    Code:
    function EFload(){
    	httpObject = getHTTPObject();
    	if(httpObject != null) {
    		httpObject.open("GET", "emailform.php?app=start", true);
    		httpObject.send(null);
    		httpObject.onreadystatechange = setOutput();
    	}
    }
    That line should precede the call to send and it should be:
    Code:
    httpObject.onreadystatechange = setOutput;
    The readystatechange handler should also check httpObject.status == 200
    Y_U U_G_A_E_U_ B_S_A_D_

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center

"

"

X vBulletin 4.2.2 Debug Information

  • Page Generation 0.13292 seconds
  • Memory Usage 2,866KB
  • Queries Executed 15 (?)
More Information
Template Usage (34):
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_global_above_footer
  • (1)ad_global_below_navbar
  • (1)ad_global_header1
  • (1)ad_global_header2
  • (1)ad_navbar_below
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)ad_thread_first_post_content
  • (1)ad_thread_last_post_content
  • (5)bbcode_code
  • (1)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)headinclude_bottom
  • (3)memberaction_dropdown
  • (1)navbar
  • (4)navbar_link
  • (1)navbar_moderation
  • (1)navbar_noticebit
  • (1)navbar_tabs
  • (2)option
  • (3)postbit
  • (3)postbit_onlinestatus
  • (3)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available (6):
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files (26):
  • ./showthread.php
  • ./global.php
  • ./includes/class_bootstrap.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/functions_navigation.php
  • ./includes/class_friendly_url.php
  • ./includes/class_hook.php
  • ./includes/class_bootstrap_framework.php
  • ./vb/vb.php
  • ./vb/phrase.php
  • ./includes/functions_facebook.php
  • ./includes/functions_calendar.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_notice.php
  • ./packages/vbattach/attach.php
  • ./vb/types.php
  • ./vb/cache.php
  • ./vb/cache/db.php
  • ./vb/cache/observer/db.php
  • ./vb/cache/observer.php 

Hooks Called (73):
  • init_startup
  • friendlyurl_resolve_class
  • init_startup_session_setup_start
  • database_pre_fetch_array
  • database_post_fetch_array
  • init_startup_session_setup_complete
  • global_bootstrap_init_start
  • global_bootstrap_init_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • load_show_variables
  • load_forum_show_variables
  • global_state_check
  • global_bootstrap_complete
  • global_start
  • style_fetch
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • strip_bbcode
  • friendlyurl_clean_fragment
  • friendlyurl_geturl
  • forumjump
  • cache_templates
  • cache_templates_process
  • template_register_var
  • template_render_output
  • fetch_template_start
  • fetch_template_complete
  • parse_templates
  • fetch_musername
  • notices_check_start
  • notices_noticebit
  • process_templates_complete
  • friendlyurl_redirect_canonical
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • memberaction_dropdown
  • tag_fetchbit
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • build_navigation_data
  • build_navigation_array
  • check_navigation_permission
  • process_navigation_links_start
  • process_navigation_links_complete
  • set_navigation_menu_element
  • build_navigation_menudata
  • build_navigation_listdata
  • build_navigation_list
  • set_navigation_tab_main
  • set_navigation_tab_fallback
  • navigation_tab_complete
  • fb_like_button
  • showthread_complete
  • page_templates