SitePoint Sponsor

User Tag List

Results 1 to 4 of 4

Hybrid View

  1. #1
    SitePoint Addict
    Join Date
    Jun 2005
    Posts
    196
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    AND(&) Symbol Messing Up Params

    I'm using the following AJAX code to send GET vars to my processing PHP file. This works great as is except that it will not accept a *&* (AND symbol) in the text input. It trys to pass what is after the *&* as a new GET var. I totaly get what is happening, just don't get how to fix it. I hope my example code is sufficient.

    HTML:
    Code:
    <input type="text" class="inputbox" value="pb&j" id="input_name" name="input_name" onblur="javascript:makeRequest('my_file.php?new=',this.value);"/>
    Javascript:
    Code:
    var http_request = false;
    function makeRequest(url, parameters) { //alert(parameters)
    	http_request = false;
    	if (window.XMLHttpRequest) { // Mozilla, Safari,...
    		http_request = new XMLHttpRequest();
    		if (http_request.overrideMimeType) {
    			// set type accordingly to anticipated content type
    			//http_request.overrideMimeType('text/xml');
    			http_request.overrideMimeType('text/html');
    		}
    	} else if (window.ActiveXObject) { // IE
    		try {
    			http_request = new ActiveXObject("Msxml2.XMLHTTP");
    		} catch (e) {
    			try {
    				http_request = new ActiveXObject("Microsoft.XMLHTTP");
    			} catch (e) {}
    		}
    	}
    	if (!http_request) {
    		alert('Cannot create XMLHTTP instance');
    		return false;
    	}
    	http_request.onreadystatechange = alertContents;
    
    	// FOR POST VARS
    	//http_request.open('POST', url, true);
    	//http_request.send(parameters);
    
    	// FOR GET VARS
    	http_request.open('GET', url + parameters + "&time=" + get_date(), true);
    	http_request.send(null);
    }
    
    function alertContents() {
    if (http_request.readyState == 4) {
     if (http_request.status == 200) {
        //alert(http_request.responseText);
        result = http_request.responseText;
        document.getElementById('myspan').innerHTML = result;
     } else {
        alert('There was a problem with the request.');
     }
    }
    }

  2. #2
    SitePoint Evangelist hexburner's Avatar
    Join Date
    Jan 2007
    Location
    Belgium
    Posts
    591
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Replace the ampersand with &#37;26%2338;
    That should do it.
    FOR SALE: 1 set of morals, never used, will sell cheap

  3. #3
    SitePoint Addict
    Join Date
    Jun 2005
    Posts
    196
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    my code is just example of what a user may input. Otherwise, i definitely would have done this way.

    i found http://www.webtoolkit.info/javascrip...de-encode.html. This does what i need just not sure how to implement.

  4. #4
    SitePoint Addict
    Join Date
    Jun 2005
    Posts
    196
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanks for the help.

    My solutions was to add the replace() function at line 2 of the following code.

    Code:
    function makeRequest(url, parameters) {
            parameters = parameters.replace(/&/g,"&#37;26");
    	http_request = false;
    
            ... rest of function
    }


Bookmarks

Posting Permissions

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