2014-10-01 112 views
0

这里是我的javascript代码从JavaScript内部调用PHP函数?

<script> 
$(document).ready(function(){ 
$(".five").click(function(){ 
<?php echo updatepoints();?> 
}); 
}); 
</script> 

这里是我的PHP代码

<?php 
function updatepoints() { 
mysql_connect("localhost","user","password") or die (mysql_error()); 
mysql_select_db("database") or die ("Cannot connect to database"); 
$query = mysql_query("SELECT *from member WHERE username='" . $_SESSION["username"] . "'"); 
$row=mysql_fetch_array($query); 
$points = $row["points"]; 
$points = $points + 5; 
mysql_query("UPDATE member set points='" . $points . "' WHERE username='" . $_SESSION["username"] . "'"); 
} 
?> 

这两个代码是同一个页面下方其他。这似乎没有更新值。我应该如何继续?

+3

如果你想要它在点击生活加载该PHP需要做AJAX。这个实例只会在页面加载完成时加载一次php。看看AJAX jQuery – Rasclatt 2014-10-01 04:26:36

+1

* ...加上,*我认为你有'session_start();'加载某处? – 2014-10-01 04:28:04

+0

尝试回显更新查询并执行它以查找任何错误。 – Jenz 2014-10-01 04:30:25

回答

1

创建一个名为ajax_update.php的文件。在该文件中添加你的函数和用户ajax来调用该函数。

ajax_update.php

<?php 
function updatepoints() { 
     mysql_connect("localhost","user","password") or die (mysql_error()); 
     mysql_select_db("database") or die ("Cannot connect to database"); 
     $query = mysql_query("SELECT *from member WHERE username='" . $_SESSION["username"] . "'"); 
     $row=mysql_fetch_array($query); 
     $points = $row["points"]; 
     $points = $points + 5; 
     mysql_query("UPDATE member set points='" . $points . "' WHERE username='" . $_SESSION["username"] . "'"); 
} 
if($_POST['action_type'] == 'update') { 
    updatepoints(); 
} 
?> 

改变你这样的脚本

<script> 
$(document).ready(function(){ 
    $(".five").click(function(){ 
     $.ajax({ 
      type : "POST", 
      url : "ajax_update.php", 
      data : {action_type:"update"}, 
      success : function(html){ 
      } 
     }); 
    }); 
}); 
</script> 

你可以改变你的Ajax PHP文件作为Ajax和类单独的文件。在类中添加函数。让它成为工整清晰

+0

谢谢你,你的回答是最容易理解的,它的工作:) – 2014-10-01 05:25:47

2

这里,试试这个:

旁注:content.php将是你的SQL文件,该文件被称为xmlhttp.open("GET","content.php",true);

这会工作,假设你的SQL已经很好。

<!doctype html> 

<head> 

<script> 
function loadXMLDoc() 
{ 
var xmlhttp; 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText; 
    } 
} 
xmlhttp.open("GET","content.php",true); 
xmlhttp.send(); 
} 

</script> 

</head> 

</head> 
<body> 
<script> 
setInterval(loadXMLDoc,5000); 
</script> 
<h2>AJAX</h2> 
<button type="button" onclick="loadXMLDoc()">Request data</button> 

<div id="myDiv"></div> 

</body> 
</html> 
1

您可以使用jQuery,这让事情变得更简单:

<script> 
$(document).ready(function(){ 
    $.post("update_user_points.php", { username: 'someuser' }, function(response) { 
     console.log(response);//check your console 
    }); 
}); 
</script> 

我没有看到你是如何开始的会议,但这个例子通过从客户机到PHP的username值。如果你只是递增5点,你可以更好地做到这一点检查这个:

<?php 
if(isset($_POST['username']){ 

function updatepoints($username) { 

    mysql_connect("localhost","user","password") or die (mysql_error()); 
    mysql_select_db("database") or die ("Cannot connect to database"); 
    $query = sprintf("UPDATE member set points = points + 5 WHERE username='%s'", 
         mysql_real_escape_string($username)); 
    // Perform Query 
    $result = mysql_query($query); 

    // Check result 
    if (!$result) { 
     $message = 'Invalid query: ' . mysql_error() . "\n"; 
     $message .= 'Whole query: ' . $query; 
     die($message); 
    }else{ 
     echo 'update success'; 
    } 
} 
//call the function 
updatepoints($_POST['username']); 
} 
?>