Solved

Fill Options Using query result through AJAX

Posted on 2008-10-06
20
1,073 Views
Last Modified: 2010-04-21
I am trying to get a List box filled with Options based on a query that I build from the values of 2 List boxes.  So far I can pass the 2 list box "selected option" values to a php file and I can do the query (I think).  When it returns after going through "statechanged" I'm getting "No Input File Specified".  Not sure what is happening.  I think it may be something about parsing the query result but I'm not sure.  I would appreciate some help getting this going.

I have attached the code I've got so far.  If you need more of the code, just ask, it's pretty long in parts.
The Ajax
/* From the Main File */

<tr>

  <td height="23" valign="middle" style="border-bottom:1px solid #cccccc">

  	<p><strong>Group:&nbsp;&nbsp;&nbsp;  	</strong></p>

    <p>&nbsp;    </p>

	</td>

  <td height="23" style="border-bottom:1px solid #cccccc">

  <div class="style5" id="GrpSpot" >

  <select name="GroupDropdown" size="1" style="font:8pt verdana" onChange="ShowBACEType(frmBACEStk.GroupDropdown.options.value);"> 

<!--  Line 130 Maybe -->

<!-- <select name="GroupDropdown" size="1" style="font:8pt verdana" onChange="htmlData('BACETypeQry.php', 'firstlvl=' + document.getElementById('CategoryDropdown').value + ' secondlvl=' + document.getElementById('GroupDropdown').value);"> -->

  <!-- Line 132 Maybe -->

  <option>Choose a Group...</option>

</select>

</div> 
 

/* -------- From the JS Code File  -----------*/

function ShowBACEType(Grppicked, Catpicked) { // Shows the pictures in that category.

  //Need this to bridge to selecting from the database.

  alert (" In ShowBACEType ");

  xmlHttp=GetXmlHttpObject();

  if (xmlHttp==null) {

	 alert ("Browser does not support HTTP Request");

     return;

  }

  var url="BACETypeQry.php"

  url=url+"?q="+escape(Catpicked)+"&r="+escape(Grppicked);

  url=url+"&sid="+Math.random();

  //alert ("ShowBACEType  url =  " + url);

  xmlHttp.onreadystatechange=stateChanged 

  xmlHttp.open("GET",url,true)

  xmlHttp.send(null)

}
 

/*----------- The PHP query File -------------*/

<?php 

   require_once('Connections/BACEMySQL.php'); 
 

ini_set('display_errors', 1);

error_reporting(E_ALL);// List of Pictures-Stock Designs
 

mysqli_select_db($BACEMySQL, $database_BACEMySQL);

if ( ! $BACEMySQL) {

     die( "Couldn't connect to MySQL:  ".mysql.error() );

}

$q=$_GET["q"];

$r=$_GET["r"];

if ( $r == "0") {

	$qryALL = "*";

} else {

	$qryALL = $r;

}
 

//$query_rsBACEstkType = "SELECT sku, typepicture, stkdestitle, stkCategory, stkGroup, stkType, stkdesComment FROM stkdesigntypes WHERE stkCategory = $_REQUEST[firstlvl] AND stkGroup = $qryALL"; 

$query_rsBACEstkType = "SELECT sku, typepicture, stkdestitle, stkCategory, stkGroup, stkType, stkdesComment FROM stkdesigntypes WHERE stkCategoryIndex = '".$r."' AND stkGrpIndex = '".$qryALL."'"; 
 

$rsBACEstkType = mysqli_query($BACEMySQL, $query_rsBACEstkType ) or die(mysql_error());

$totalRows_rsBACEstkType = mysqli_num_rows($rsBACEstkType);
 

	  

  if($totalRows_rsBACEstkType > 0):

  // if($result = mysql_query($query)) 

  { 

    if($success = mysqli_num_rows($rsBACEstkType) > 0) 

    { 

      //echo "<select name='selBACEStkDes' onchange='submitForm();'>\n"; 

      echo("<select name=\"selBACEStkDes\" onchange=\"ShowBACEPic(frmBACEStk.selBACEStkDes.options.selectedIndex);\">"); 

      //echo "<option>-- Please select --</option>\n"; 

     

      //Now fill the Select box with data 

      while ($row_rsBACEstkType = mysqli_fetch_assoc($rsBACEstkType)) { 

      // while ($row = mysql_fetch_array($result)) 

      { 

        $SDsku = $row_rsBACEstkType['sku'];

		$SDpicfile = $row_rsBACEstkType['typepicture'];

		$SDTitle = $row_rsBACEstkType['stkdestitle'];

		$SDstkCat = $row_rsBACEstkType['stkCategory'];

		$SDstkGrp = $row_rsBACEstkType['stkGroup'];

		$SDstktype = $row_rsBACEstkType['stkType'];

		$SDstkcommnt = $row_rsBACEstkType['stkdesComment'];

		// $Customername = $row['Customername']; 

        $type = $row['type']; 

        echo("<option value=\"$SDpicfile\">$SDTitle</option>"); 

		MainArray[MainVar++] = new Fix($SDsku, $SDpicfile, $SDTitle, $SDstkCat, $SDstkGrp, $SDstktype, $SDstkcommnt)

      } 

      echo("</select>"; 

    } 

    elseif($debug) 

    { 

      die("retrieveQueryType(): No rows returned by query"); 

    } 

  } 

  else 

  { 

    $success = FALSE; 

    if($debug) 

    { 

      die("retrieveQueryType(): query failed - ".mysql_error()); 

    } 

  } 

  // return($success); 

} 
 

?>
 

/*--------------- The AJAX functions file -----------*/

function GetXmlHttpObject(handler)

{

   var objXMLHttp=null; 

  if (window.XMLHttpRequest)

   {

       objXMLHttp=new XMLHttpRequest()

   }

   else if (window.ActiveXObject)

   {

       objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")

   }

   return objXMLHttp

}

function stateChanged()

{

   alert ( " IN stateChanged ");

   if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")

   {

           <!-- document.getElementById("txtResult").innerHTML= xmlHttp.responseText; -->

           <!--document.getElementById("typeList").innerHTML= xmlHttp.responseText; -->

           document.getElementById("PicSpot").innerHTML= xmlHttp.responseText; 

   }

   else {

           //alert(xmlHttp.status);

   }

}

/*--------------End ---------------------------*/

Open in new window

0
Comment
Question by:OldHatt45
  • 11
  • 9
20 Comments
 
LVL 10

Accepted Solution

by:
Bane83 earned 500 total points
ID: 22650565
["No input file specified" means that you have provided an invalid URI, and the file you are looking for doesn't exist, not that it cannot be ran. The issue is either in the URI you are providing, the location of your files, or the directory you have set as your root.]

http://bytes.com/forum/thread681936.html

Further to that, there are several issues I see with your code:

1) First, you may wish to change your GetXMLHttpObject() to the one I've included below.  It's a bit more complete and allows for more browser compatibility.
2) You're not checking the return code on your AJAX call. (see below)
3) Be careful with that query.  I could easily do an injection attack on that and wipe your table or even database:
Example:
With
$query_rsBACEstkType = "SELECT sku, typepicture, stkdestitle, stkCategory, stkGroup, stkType, stkdesComment FROM stkdesigntypes WHERE stkCategoryIndex = '".$r."' AND stkGrpIndex = '".$qryALL."'";

What happens if I intercept the AJAX call and change the querystring to:
...&r=%27%3BDROP%20TABLE%20stkCategoryIndex%3B--...
(';DROP TABLE stkCategoryIndex;--)
 I would look up ways to do sanitization on your parameters before passing them into your queries.
1

====================================================================

function GetXmlHttpObject() 

{

	var xmlhttp = null;

      

	if (window.XMLHttpRequest) // Mozilla, Safari,...

	{ 

		xmlhttp = new XMLHttpRequest();

	} 

    else if (window.ActiveXObject) // IE

    { 

        try 

        {

            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");

        } 

        catch(e) 

        {

            try 

            {

				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

            } 

            catch(e) 

            {

				alert('Your browser does not support XMLHTTP.\r\nThe page content cannot be updated properly.\n\rUse Internet Explorer 5.0+.');

            }

        }

    }

    

    return xmlhttp;

}
 

2

===================================================================

if(http.readyState == 4 || http.readyState == "complete")

{

	if (http.status == 200)

	{

		// Do work

	}

}

Open in new window

0
 

Author Comment

by:OldHatt45
ID: 22651814
Bane83,

OK, point taken.  I have read the info about the URI.
I think I fixed the URI, but I'm still seeing the same "Input file not specified" message where the 3rd list box should be.  
THe file is in the same directory as the calling file. "localhost\BACE".  I have the line with the call on it as
  var url=".\BACE\BACETypeQry.php"
Is this correct?????

I also agree about the SQL Injection attack piece.  Once I get the basic stuff working, I will go fix that.  But first, I need to get it working. :-))

I don't understand this????  
2
===================================================================
if(http.readyState == 4 || http.readyState == "complete")
{
      if (http.status == 200)
      {
            // Do work
      }
}

Does this need to replace something in the statechanged function???

Thanks

OldHatt45
0
 

Author Comment

by:OldHatt45
ID: 22653100
A little more info.  WHen I run the project, I wanted to see what the stateChanged function was doing, so I added the line

alert ( " IN stateChanged  readyState =  " + xmlHttp.readyState);

I can now see the states change from 1 to 2 to 3 to 4.  

It looks like it's going out and getting something, but I still show the "No input file specified message where the third select box should appear.  

Please Help , I'm really going crazier.

THanks

OldHatt45
0
 
LVL 10

Assisted Solution

by:Bane83
Bane83 earned 500 total points
ID: 22653496
With regards to #2,
function stateChanged()
{
   alert ( " IN stateChanged ");
   if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
   {
           <!-- document.getElementById("txtResult").innerHTML= xmlHttp.responseText; -->
           <!--document.getElementById("typeList").innerHTML= xmlHttp.responseText; -->
           document.getElementById("PicSpot").innerHTML= xmlHttp.responseText;
   }
   else {
           //alert(xmlHttp.status);
   }
}

Should be changed to:
function stateChanged()
{
   alert ( " IN stateChanged ");
   if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
   {
         if (xmlHttp.status == 200)
         {
           <!-- document.getElementById("txtResult").innerHTML= xmlHttp.responseText; -->
           <!--document.getElementById("typeList").innerHTML= xmlHttp.responseText; -->
           document.getElementById("PicSpot").innerHTML= xmlHttp.responseText;
         }
         else
         {
             // Handle error
         }
   }
   else {
           //alert(xmlHttp.status);
   }
}


Now, these are the next steps:
1) Ensure that the php file is returning what it should be.  Call the page on its own, passing in a valid querystring just to be sure that the problem isn't with the php file itself.
2) If the php file is fine, then we know that something is wrong with the way we're trying to access the page.  Normally, a URL with nothing preceding it will start at the current directory.  So, we'll use a little tool to help us figure out what's going on: http://www.fiddlertool.com/fiddler/
Fiddler is a free tool which runs with IE and monitors requests/responses.  With this you can see whether or not the address being passed is correct and, if so, what's being passed back.
0
 
LVL 10

Assisted Solution

by:Bane83
Bane83 earned 500 total points
ID: 22675189
I forgot to mention the third step:  Let me know if you got anywhere with this.
0
 

Author Comment

by:OldHatt45
ID: 22701784
Bane83,
Sorry it has taken so long to get back to this.  My machine died!  Fortunately I had a backup, and also fortunately it wasn't the hard drive.

Ended up getting a new machine, but with Vista (64 bit).  Finally got everything setup and working again.  I installed fiddler but am having trouble.  It won't capture the internal requests.  I tried changing the "localhost" to 127.0.0.1 but  that didn't seem to help.  

Any suggestions to getting it setup?  I've looked fr the answer to this on the fiddler site and group but can't find anything.
Would really appreciate the help.  Oh, and I am still not getting the page for the Query.php page.  Other pages are working fine.

Thanks
OldHatt45
0
 
LVL 10

Assisted Solution

by:Bane83
Bane83 earned 500 total points
ID: 22702931
Don't you just love it when computers decide to die? :)

I had forgotten about that issue with localhost.  What I found works most of the time is adding a period after "localhost", so if I were testing on http://localhost/MySite, I would go to http://localhost./MySite in IE which normally gets Fiddler working.

Ok, so what happens when you go to Query.php?  Is it an error page?  A blank page?  I looked at the PHP script attached below (I believe this is the code for Query.php, correct?) and I can't immediately see any problems, but I'll admit that my knowledge of PHP is rather rudimentary.
<?php 

   require_once('Connections/BACEMySQL.php'); 

 

ini_set('display_errors', 1);

error_reporting(E_ALL);// List of Pictures-Stock Designs

 

mysqli_select_db($BACEMySQL, $database_BACEMySQL);

if ( ! $BACEMySQL) {

     die( "Couldn't connect to MySQL:  ".mysql.error() );

}

$q=$_GET["q"];

$r=$_GET["r"];

if ( $r == "0") {

        $qryALL = "*";

} else {

        $qryALL = $r;

}

 

//$query_rsBACEstkType = "SELECT sku, typepicture, stkdestitle, stkCategory, stkGroup, stkType, stkdesComment FROM stkdesigntypes WHERE stkCategory = $_REQUEST[firstlvl] AND stkGroup = $qryALL"; 

$query_rsBACEstkType = "SELECT sku, typepicture, stkdestitle, stkCategory, stkGroup, stkType, stkdesComment FROM stkdesigntypes WHERE stkCategoryIndex = '".$r."' AND stkGrpIndex = '".$qryALL."'"; 

 

$rsBACEstkType = mysqli_query($BACEMySQL, $query_rsBACEstkType ) or die(mysql_error());

$totalRows_rsBACEstkType = mysqli_num_rows($rsBACEstkType);

 

          

  if($totalRows_rsBACEstkType > 0):

  // if($result = mysql_query($query)) 

  { 

    if($success = mysqli_num_rows($rsBACEstkType) > 0) 

    { 

      //echo "<select name='selBACEStkDes' onchange='submitForm();'>\n"; 

      echo("<select name=\"selBACEStkDes\" onchange=\"ShowBACEPic(frmBACEStk.selBACEStkDes.options.selectedIndex);\">"); 

      //echo "<option>-- Please select --</option>\n"; 

     

      //Now fill the Select box with data 

      while ($row_rsBACEstkType = mysqli_fetch_assoc($rsBACEstkType)) { 

      // while ($row = mysql_fetch_array($result)) 

      { 

        $SDsku = $row_rsBACEstkType['sku'];

                $SDpicfile = $row_rsBACEstkType['typepicture'];

                $SDTitle = $row_rsBACEstkType['stkdestitle'];

                $SDstkCat = $row_rsBACEstkType['stkCategory'];

                $SDstkGrp = $row_rsBACEstkType['stkGroup'];

                $SDstktype = $row_rsBACEstkType['stkType'];

                $SDstkcommnt = $row_rsBACEstkType['stkdesComment'];

                // $Customername = $row['Customername']; 

        $type = $row['type']; 

        echo("<option value=\"$SDpicfile\">$SDTitle</option>"); 

                MainArray[MainVar++] = new Fix($SDsku, $SDpicfile, $SDTitle, $SDstkCat, $SDstkGrp, $SDstktype, $SDstkcommnt)

      } 

      echo("</select>"; 

    } 

    elseif($debug) 

    { 

      die("retrieveQueryType(): No rows returned by query"); 

    } 

  } 

  else 

  { 

    $success = FALSE; 

    if($debug) 

    { 

      die("retrieveQueryType(): query failed - ".mysql_error()); 

    } 

  } 

  // return($success); 

} 

 

?>

Open in new window

0
 

Author Comment

by:OldHatt45
ID: 22703285
Bane83
OK, I got it kind of working.  The "BACETypeQry.php" file and the Connection file appear to be working.
I am getting a 200 from fiddler and a blank page which is what i expected.

The only way I can get fiddler to show me anything is to replace "localhost" with "ipv6.fiddler".  But I don't understand how to make it automatically go to "ipv6.fiddler".  Can you shed any light on that?
I also tried "127.0.0.1" with no success either.  Uggghhhhh ;-))

Been working with computers for a very long time doing different things, and I've truly grown to hate them.  Especially when you do something like just shutting the machine off, then realizing you need to do something and turning it back on only to have it sit there and stare at you like "So, what do you want me to do?"

OldHatt45

0
 
LVL 10

Assisted Solution

by:Bane83
Bane83 earned 500 total points
ID: 22703615
Shouldn't BACETypeQry.php be returning the select menu rather than a blank page?

As for fiddler's setup, I'm as much in the dark as you are unfortunately, as I haven't really had to muck around with anything but its basic functionality.  I did some quick googling and here's what I found which may be helpful:

IE7 and the .NET Framework are hardcoded not to send requests for Localhost through any proxies, and as a proxy, Fiddler will not receive such traffic.

The workaround is to use your machine name as the hostname instead of Localhost or 127.0.0.1. So, for instance, rather than hitting http://localhost:8081/mytestpage.aspx, instead visit http://machinename:8081/mytestpage.aspx.

...Or, if you're using Fiddler v2.1.8 or later, just use http://ipv4.fiddler to hit localhost on the IPv4 adapter, or use http://ipv6.fiddler to hit localhost on the IPv6 adapter.  This works especially well with the Visual Studio test webserver (codename: Cassini) because the test server only listens on the IPv4 loopback adapter.

Lastly, you could Customize your Rules file like so:

static function OnBeforeRequest(oSession:Fiddler.Session){
  if (oSession.HostnameIs("MYAPP")) { oSession.host = "127.0.0.1:8081"; }
}

...and then just hit http://myapp, which will act as an alias for 127.0.0.1:8081.

You can add a lot of power to Fiddler by updating its JScript.NET CustomRules.js file.  To add rules to Fiddler, choose Customize Rules on Fiddler's Rules menu.  Enter code inside the suggested function and save the file.  Fiddler will automatically reload the rules.
0
 

Author Comment

by:OldHatt45
ID: 22707840
Bane83

OK, I think I figured out how  to deal with the "localhost" thing.  Dreamweaver has a setting on its "Testing Server" setup parameters, where you would normally put in "localhost".  I changed that to the ipv6.fiddler and it is working correctly.  So that's taken care of.

OK, so I figured out all the syntax type errors and it is working to a point.  It seems to stop working in the "statechanged" function.  I put in an alert to see what the responsetext is, and it's coming back empty.  And statechanged says it's state 4.

I know there is data for the selection criteria, and I think the parameters are being passed correctly.  
This is the contents of the alert window.

ShowBACEType  url =  http://ipv6.fiddler/BarkAvenueCustomEmbroidery/BACETypeQry.php?q=7&r=0&sid=0.7322301236794777

I'm stumped.

OldHatt45


function stateChanged()

{

   alert ( " IN stateChanged  readyState =  " + xmlHttp.readyState);

   if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")

   {

      if (xmlHttp.status == 200) { 

	  <!-- document.getElementById("txtResult").innerHTML= xmlHttp.responseText; -->

           <!--document.getElementById("typeList").innerHTML= xmlHttp.responseText; -->

		   alert ("xmlHttp.responsetext =  " + xmlHttp.responseText);

           document.getElementById("PicSpot").innerHTML= xmlHttp.responseText; 

	  } else {

		  //Handle error

	  } 

   } else {

           //alert(xmlHttp.status);

   }

}

Open in new window

0
Do You Know the 4 Main Threat Actor Types?

Do you know the main threat actor types? Most attackers fall into one of four categories, each with their own favored tactics, techniques, and procedures.

 
LVL 10

Assisted Solution

by:Bane83
Bane83 earned 500 total points
ID: 22707981
Ok, so now we know for a fact that your AJAX call is fine and it's hitting the appropriate page (otherwise you wouldn't get a 200 status).  That means that the issue lies with BACETypeQry.php, so we'll have to debug this a bit.  For test purposes, let's go directly to http://ipv6.fiddler/BarkAvenueCustomEmbroidery/BACETypeQry.php?q=7&r=0&sid=0.7322301236794777 and see what's getting output.  My guess is that you'll be getting a blank page (since your responsetext is empty) which means something else is going on here.

So... First let's run the query on it's own against the database and make sure that it's returning data.  If the query successfully returns data based on the parameters you pass in (q=7, r=0), then we need to figure out what part of the php code is giving us grief.  To do that, let's just dump in some echo statements at certain points along the code and see how far into the code we can get before something fails.
0
 

Author Comment

by:OldHatt45
ID: 22742769
Hey Bane83,

OK, I got the reply from the Database, running tthe TypeQry.php file separately.
Now another really great problem.  I put the test files up on the ISP, and I'm getting an "Access Denied" error and no results displayed in the Select box (the output from the query).
ISP says my code is written wrong.  Ugghhhh.  Seems like it may have something to do with mbstring.dll, but I don't know.

Anyhow, any insight????

THanks

OldHatt45
0
 

Author Comment

by:OldHatt45
ID: 22742784
Oh, if you want to check it out, you can go to the following URL's

http://barkavenuece.fatcow.com/Test/BACEStockDesign.php

http://barkavenuecustomembroidery.com/Test/BACETypeQry.php

Thanks

OldHatt45
0
 
LVL 10

Assisted Solution

by:Bane83
Bane83 earned 500 total points
ID: 22743313
Lucky for you, this is a simple fix.
I went to the first link, selected a couple items and got the "Access Denied" error.  I went into a javascript debugger and saw that it was the xmlHttp.open() call that was failing.  Hmm.  I grabbed the url that it was trying to open, pasted it into the browser and sure enough "Page does not exist".  So I compared the url to your second URL:

http://barkavenuecustomembroidery.com/test/BACETypeQry.php?q=1&r=0&sid=0.15934681928206545
http://barkavenuecustomembroidery.com/Test/BACETypeQry.php

Ignoring the querystring, can you spot the difference?  The problem is the use of /test/ instead of /Test/.  Some hosting applications are capable of determining that they are one and the same, but I believe PHP is case sensitive when it comes to URL's, so simply change this line:

var url="http://BarkAvenueCustomEmbroidery.com/test/BACETypeQry.php"

to

var url="http://BarkAvenueCustomEmbroidery.com/Test/BACETypeQry.php"

and that should wrap this up.
0
 

Author Comment

by:OldHatt45
ID: 22744244
Bane83
OK, I changed the "test" to "Test" and fixed the QryType.php.
Still getting the Access Denied error.

Don't understand the xmlhttp.open error thing.  Is there something wrong with the way I'm constructing the query?  And remember, the ISP support guy said there was a problem with mbstring.dll, which I have no idea whatthat's all about.

Thanks

OldHatt45
0
 
LVL 10

Assisted Solution

by:Bane83
Bane83 earned 500 total points
ID: 22744568
Looks like you're hitting a cross-domain issue: http://forums.devshed.com/javascript-development-115/ajax-problem-access-is-denied-452579.html

What this means is that you're starting off at http://barkavenuece.fatcow.com/ but making a request to http://barkavenuecustomembroidery.com/.  These are different domains, and it's called a cross-domain request.  It can be a real headache for some developers as there's a lot of built in security around it.  If at all possible, I would keep your entire application on one server, but have a read through the link I provided for some possible alternatives.

(I'm ignoring your ISP support guy's idea for now.  I find in most cases that these people hired for tech support know squat and give you the first answer they find in a FAQ or Google.  That being said, from what I've found, mbstring.dll is used so that you can handle strings written in Japanese and other languages that require more than a single byte to store a letter/character... Definitely doesn't look to be at all related to your issue.)
0
 

Author Comment

by:OldHatt45
ID: 22745647
Bane83,

OK, I read the "cross Domain stuff.  Excellent.

That seems to have done the trick!!!

For that AND all the prceeding help I'm awarding the Points!

I will have another question later tonight.  I hope you will respond to it!!!!

THANKS VERY MUCH For the HELP!!!

OldHatt45
0
 

Author Closing Comment

by:OldHatt45
ID: 31503371
Excellent!  What I wanted was the Guidance and you Provided that in Spades!!!  Thanks Again
OldHatt45
0
 

Author Comment

by:OldHatt45
ID: 22745724
Bane83

Hope you got all the points.  I split it because each piece was part of the solution so anyone looking will seethe pieces that went into the solution!!

Thanks
OldHatt45
0
 
LVL 10

Expert Comment

by:Bane83
ID: 22746625
Not a problem!  Once you get the new question up, just post a link in here and I'll take a look.  If I know anything on the subject and no one's picked it up before I get a chance, I'll see what I can do!
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
Java Server Faces parameter pass? 6 22
Error installing extension Linux 4 30
Problem to page 4 23
SQL inner join confusion 15 19
jQuery is a JavaScript library that greatly simplifies JavaScript programming. AJAX is an acronym formed from "Asynchronous JavaScript and XML."  AJAX refers to any communication between client and server, when the human client does not observe a…
OverviewThis article demonstrates a simple search form using AJAX. The purpose of the article is to demonstrate how to use the same code to render a page and javascript (JQuery) and AJAX to make subsequent calls to refine the results. The princip…
The viewer will learn how to count occurrences of each item in an array.
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.

705 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now