2013-11-03 2 views
0

mysql에서 일부 값을 검색하기 위해 PHP 파일을 사용하고 있습니다. 결과는 다음과 같습니다 : 4.7647058823529.html 값이로드되는 동안 경고가 표시되지 않습니다.

div에 내 코드가 포함 된 결과로이 결과가로드되고 잘 작동합니다.

  1. 내가이 값 경고를 얻을 경고 사용하고있는 경우는 값을 표시 해달라고. 4.7하지 4.7647058823529

을 왜 알림이 발을 표시 해달라고 :

  • 어떻게 이런 외모에 TIS 값을 변환 할 수 있습니까?
    $(".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; 
    } 
    } 
    ?> 
    

    감사합니다! load 그렇게 비동기입니다

  • +0

    우리는 ... –

    답변

    1

    이 코드는 당신이 생각하는 방법을 실행하지 않습니다. 따라서 완료되기 전에이 코드의 나머지 부분은 계속 실행됩니다. 따라서이 코드가 실행될 때 $(".getfinalrate").text()이 비어 있으면 res은 비어 있습니다.

    비동기 적으로 생각해야합니다. .load()이 실행되면 자체 스레드에서 계속 진행됩니다. 해당 스레드에 대한 응답으로 일어날 필요가있는 것은 콜백에서 해당 스레드가 실행해야합니다..load()는 콜백 함수에 대한 인수를 공급한다 : 그것 AJAX 요청을 완료하면,이 구조에서는

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

    가 익명 인라인 .load() 함수에 의해 호출 될 것이다. .load()에 대한이 호출 이후의 코드는 즉시 계속되지만 비동기 호출이 완료 될 때까지 함수 내의 코드가 지연됩니다.

    3

    때문에 :

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

    그래서 res 첫 번째 .getfinalrate 요소가 load 전에에서 가졌던 가진 끝납니다.

    이 솔루션은 load의 콜백 함수를 사용하는 것입니다 : 내가 좋아하는 외모에 TIS 값을 변환 할 수있는 방법

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

    을이 : 4.7하지 4.7647058823529

    그것은 을 요청하는 것이 가장 좋습니다 하나의 질문에 대한 스택 오버플로.

    당신이 res 원하는 가정 숫자로 대답은 : 당신이 문자열로하려면

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

    것은,이 작업을 수행 할 수 있습니다 :

    res = (Math.floor(4.76747 * 10)/10).toFixed(1) 
    
    는 ...이 보장하는 부동 소수점이 완벽하게 정확하지 않기 때문에 작은 작은 비트가 주위에 놓여 있지 않습니다. .load()가 비동기,

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

    당신은 참조하십시오

    +0

    그래서 작동 할 수 있습니다하시기 바랍니다 방법을 확인하는 방법 PHP 코드를 볼 수? –

    +0

    @IreneT .: 죄송합니다. 두 번째 질문에 정신이 없습니다. 업데이트를 참조하십시오. –

    1

    다른 페이지에서 값을 얻는 방법은 Ajax가 필요합니다.

    $.get("update.php?tpid="+id, function(response){ 
        //Alert Response 
        alert(response); 
        $(".getfinalrate").html(response); 
    
    }): 
    
    0
    1. 당신은 AJAX 요청 SYNCHRON 할 필요가있다. 이것 좀 봐 : http://api.jquery.com/jQuery.ajax/ 특히 async 옵션에. 그러나로드가 완료 될 때까지 전체 사이트가 차단됩니다.
    2. var res = $(".getfinalrate").text();
      res = Math.floor(res * 10)/10; alert(res);
    관련 문제