The problem I have is getting their score out of javascript and into ajax and therefore into the sql record table. I have no problem sending php variables to ajax, just the javascript one.
The code :
Expand|Select|Wrap|Line Numbers
- <HTML><HEAD>
- <?PHP
- //info carried forward from previous page:
- $test_name = "strawberry1";
- $person = "name";
- ?>
- <script type="text/javascript">
- <!--
- function writeResults(){
- var ajaxRequest; // The variable that makes Ajax possible!
- try{
- // Opera 8.0+, Firefox, Safari
- ajaxRequest = new XMLHttpRequest();
- } catch (e){
- // Internet Explorer Browsers
- try{
- ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
- } catch (e) {
- try{
- ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
- } catch (e){
- // Something went wrong
- alert("Your browser broke!");
- return false;
- }
- }
- }
- // Create a function that will receive data sent from the server
- ajaxRequest.onreadystatechange = function(){
- if(ajaxRequest.readyState == 4){
- var ajaxDisplay = document.getElementById('ajaxDiv');
- ajaxDisplay.innerHTML = ajaxRequest.responseText;
- }
- }
- // get form variables
- var CorrectAns = document.getElementById('CorrectAns').value;
- var queryString = "?CorrectAns=" + CorrectAns";
- ajaxRequest.open("GET", "write-results.php" + queryString, true);
- ajaxRequest.send(null);
- }
- function CheckAnswers(elm)
- {
- for(var i = 0; i < 3; i++) // QQQ number of q's - get from sql for each test
- {
- var elm11 = document.getElementById("txt" + i); // answer given by user
- var elm12 = document.getElementById("ans" + i); // correct answer
- var elm13 = document.getElementById("atd" + i); // area to put correct / wrong
- if(elm11)
- {
- if(elm12.value == elm11.value)
- {
- correctAns++;
- }
- else
- {
- if(elm13 != null)
- {
- elm13.innerHTML = "answer = " + elm12.value;
- }
- }
- }
- }
- }
- -->
- </SCRIPT>
- </HEAD>
- <body>
- <FORM action="<?=$_SERVER['PHP_SELF']?>" method="post">
- <table>
- <tr><td>6</td><td>+</td><td>1</td><td>=</td><td>?</td><td><input type="text" name="txt0" size="3"></td>
- <td></td><td></td><td><TD align="middle" width="40"><IMG id="img0" src="blank.gif"></TD><TD class="answers" id="atd0" vAlign="left" align="left" width="140"> </td><TD><input type="hidden" name="ans0" value="7" width="40"><input type="hidden" name="qr" value="0"><input type="hidden" name="id" value="28"></td></tr>
- <tr><td>3</td><td>+</td><td>4</td><td>=</td><td>?</td><td><input type="text" name="txt1" size="3"></td>
- <td></td><td></td><td><TD align="middle" width="40"><IMG id="img1" src="blank.gif"></TD><TD class="answers" id="atd1" vAlign="left" align="left" width="140"> </td><TD><input type="hidden" name="ans1" value="7" width="40"><input type="hidden" name="qr" value="1"><input type="hidden" name="id" value="3"></td></tr>
- <tr><td>3</td><td>+</td><td>2</td><td>=</td><td>?</td><td><input type="text" name="txt2" size="3"></td>
- <td></td><td></td><td><TD align="middle" width="40"><IMG id="img2" src="blank.gif"></TD><TD class="answers" id="atd2" vAlign="left" align="left" width="140"> </td><TD><input type="hidden" name="ans2" value="5" width="40"><input type="hidden" name="qr" value="2"><input type="hidden" name="id" value="5"></td></tr>
- </TABLE>
- <input type="hidden" id="CorrectAns" value="">
- <input type=button value="Check Answers" name=Check Answers id=writeResults style="DISPLAY: none" onclick=CheckAnswers(); writeResults()> </td>
- <td width="50%"><INPUT class=bigbutton id=BtnSub style="DISPLAY: none" type=submit value="Start New Test"></center><!--<img src="COLSRCPtrans.gif"/></center>-->
- </td></tr></table></td></tr><tr><td>
- <div id="ajaxDiv">if this disappeared something happened with AJAX!!</div></td></tr>
- </FORM>
- </BODY></HTML>
[PHP]<?php
mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname) or die("Cannot connect to database");
$CorrectAns = $_GET['CorrectAns'];
$test_name = $_GET['test_name '];
$person = $_GET['person'];
mysql_query("INSERT INTO person (id, test_name, num_correct, date_time)
VALUES ('', '$test_name', '$CorrectAns', NOW())");
?>[/PHP]
If I change the form field to
<input type="hidden" id="CorrectAns" value="666"> then 666 is written to the table fine.
So, I conclude, the problem lies with defining a value for 'CorrectAns' in function CheckAnswers(elm)....
Can anybody please show me the correct javascript to get the result 'correctAns' into the form and therefore back into the ajax?
Thanks