0

我正在使用 php 文件从 mysql 中检索一些值。结果如下所示:4.7647058823529.

我正在用我的代码将这个结果加载到一个 div 中,它工作得很好。

  1. 如果我使用警报来获取此值警报不显示该值。
  2. 我如何将 tis 值转换为如下所示:4.7而不是4.7647058823529

为什么警报不显示这个值?

$(".getfinalrate").load("update.php?tpid=" + id);
var res = $(".getfinalrate").text();
$(".getfinalrate").fadeIn();
alert (res);

我的PHP代码:

<?php

if(isset($_GET['tpid']))
{

require "connection.php";

$videid = $_GET['tpid'];
$id = mysql_escape_string($videid);


$thecounter = mysql_query("SELECT COUNT(*) AS sumury FROM user WHERE id = '$id'"); 
$numm = mysql_fetch_array($thecounter); 
$getallrecords = $numm["vote_action"];

$queryf="SELECT SUM(vote_action) AS `total` from user WHERE id = '$id'";
$resultf=mysql_query($queryf);
while($rowf=mysql_fetch_assoc($resultf))
$totals = $rowf['total'];

if ($getallrecords > $totals){
$finalratepoints = $getallrecords / $totals;
echo $finalratepoints;  
}else{
$finalratepoints = $totals / $getallrecords;
echo $finalratepoints;
}
}
?>

谢谢!

4

4 回答 4

3

因为load异步的,所以:

$(".getfinalrate").load("update.php?tpid=" + id); // *Starts* the load
var res = $(".getfinalrate").text();              // Gets the text *BEFORE* the load completes

所以res最终.getfinalrate在. _ _load

解决方案是使用load的回调函数:

$(".getfinalrate").load("update.php?tpid=" + id, function() {
    // This function is called when the load is complete
    var res = $(".getfinalrate").text();
    $(".getfinalrate").fadeIn();
    alert (res);
});

我如何将 tis 值转换为如下所示:4.7而不是4.7647058823529

最好在 Stack Overflow 上对每个问题提出一个问题。

假设你想要res一个数字,答案是:

res = Math.floor(4.76747 * 10) / 10;

如果你想要它作为一个字符串,你可能想要这样做:

res = (Math.floor(4.76747 * 10) / 10).toFixed(1)

...确保周围没有微小的小数位,因为浮点并不完全精确。

于 2013-11-03T14:48:56.317 回答
1

此代码未按您认为的方式执行:

$(".getfinalrate").load("update.php?tpid=" + id);
var res = $(".getfinalrate").text();
$(".getfinalrate").fadeIn();
alert(res);

你看,.load()是异步的。所以在它完成之前,这段代码的其余部分会继续执行。当此代码开始执行时,如果为空,sores将为空。$(".getfinalrate").text()

您需要异步考虑这一点。执行时.load(),它将在自己的线程中继续。响应该线程需要发生的任何事情都需要在该线程执行的回调中发生。 .load()为这样的回调函数提供一个参数:

$(".getfinalrate").load("update.php?tpid=" + id, function () {
    var res = $(".getfinalrate").text();
    $(".getfinalrate").fadeIn();
    alert(res);
});

.load()在这种结构中,匿名内联函数将在完成其 AJAX 请求时被调用。此调用之后的任何代码都.load()将立即继续,但函数内的代码将延迟到异步调用完成。

于 2013-11-03T14:51:37.377 回答
1

您希望如何从其他页面获取值需要 Ajax。

$.get("update.php?tpid="+id, function(response){
   //Alert Response
   alert(response);
   $(".getfinalrate").html(response);

}):
于 2013-11-03T14:51:59.887 回答
0
  1. 您需要同步 AJAX 请求。看看这个:http ://api.jquery.com/jQuery.ajax/特别是异步选项。但请注意,整个站点将被阻止,直到加载完成。
  2. var res = $(".getfinalrate").text();
    res = Math.floor(res * 10)/10; alert(res);
于 2013-11-03T14:52:13.973 回答