2012-10-16 82 views
-1

我想傳遞給PHP文件cellnumber。我的AJAX不工作,當我嘗試 警報(「測試」);在ajax.onreadystatefunction()中它不會打印。AJAX和php POST問題

每當有人點擊表格 中的單元格時,就會調用我的javascript getrow(t)函數,結果是單元格變成綠色。我想最終使用php將這些數據輸入到postgres表中。

感謝您的幫助! 弗拉德

<script type="text/javascript"> 
//gets the row and column number 
function getRow(t) 
{ 
    var col=t.cellIndex; 
    var row=t.parentNode.rowIndex; 
    var testTable = document.getElementById("testTable"); 
    t.style.backgroundColor = "#33CC66"; 
    var cellnumber = (row*15 + col); 
    var ajax = new XMLHttpRequest(); 

    //use ajax to enter into visitedCells 
    ajax.onreadystatechange = function() 
    { 
     // Call a function when the state changes. 
     if(ajax.readyState == 4 && ajax.status == 200) 
     { 
      ajax.open("POST", insertCoordinates.php, true); 
      ajax.send(cellnumber);  
     } 
     else 
     { 
      alert("Error:" + ajax.status + "and " + ajax.statusText); 
     } 
    } 
} 
</script> 
</body> 
</html> 

回答

2
  ajax.open("POST", insertCoordinates.php, true); 
     ajax.send(cellnumber);  

外應ajax.onreadystatechange

只是befor }//getRow

你居然沒有請求執行

應該是這樣的:

var ajax = new XMLHttpRequest(); 
//use ajax to enter into visitedCells 
    ajax.onreadystatechange = function() {//Call a function when the state changes. 
    if(ajax.readyState == 4 && ajax.status == 200) { 
     alert('success');  
    } else { 
     alert("Error:" + ajax.status + "and " + ajax.statusText); 
} 
}//onreadyState 

ajax.open("POST", insertCoordinates.php, true); 
ajax.send(cellnumber);  

可能不會在IE瀏覽器

應該使用一個建築這樣的:

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; 
     } 
    } 
} 

但最好的方法是使用jQuery ...方便,安全