0

私はAJAXとjQueryが初めてです。unrate.php から番号を渡して checkVal として使用しようとしています (以下を参照)。ファイルは多くのことを行いますが、番号をエコーするだけです。アラート(checkVal)を追加すると、無効な文字が表示され、必要な数よりも多くなります。(番号だけ知りたいです)...

ajax ハンドラー:

$.get("unrate.php?numb="+ID, function(checkVal){
  if (checkVal == 1) {
    number.innerHTML = addNumb + 1;
  } else { 
    number.innerHTML = addNumb - 1;
  }
});

unrate.php:

<?php
$uNum = $_SESSION['userNum'];
$ider = $_GET['numb'];
$sql = mysql_query("SELECT * FROM ratecheck WHERE ID =".$ider);
$checkRay = mysql_fetch_array($sql);
$checkVal = $checkRay[$uNum];

$sqlZ = mysql_query("UPDATE ratecheck SET `".$uNum."`=0 WHERE ID=".$ider)
or die(mysql_error());

    $sqlB = mysql_query("SELECT * FROM sources WHERE ID =".$ider);
    $sourceRay = mysql_fetch_array($sqlB);
    $newRC = $sourceRay['ratecount'] - 1;

    mysql_query("UPDATE sources SET ratecount =".$newRC." WHERE ID =".$ider)
    or die(mysql_error());

if ($checkVal > 1)
    {   
    $newpts = $sourceRay['points'] - 1; 
    $userEmail = $sourceRay['user'];

    mysql_query("UPDATE sources SET points =".$newpts." WHERE ID =".$ider)
    or die(mysql_error());  

        if ($_SESSION['userName']) 
        {
            $findUser = mysql_query("SELECT * FROM users WHERE email LIKE '".$userEmail."'") or mysql_error();
            $currentRate = mysql_fetch_array($findUser);
            $newrating = $currentRate['rating'] - 1;
            mysql_query("UPDATE users SET rating =".$newrating." WHERE email LIKE '".$userEmail."'")
            or mysql_error();      

        }
        else
        {
            die('ERROR');
        }
    }
else 
    {
    $newpts = $sourceRay['points'] + 1; 
    $userEmail = $sourceRay['user'];


    mysql_query("UPDATE sources SET points =".$newpts." WHERE ID =".$ider)
    or die(mysql_error());

        if ($_SESSION['userName']) 
        {
            $findUser = mysql_query("SELECT * FROM users WHERE email LIKE '".$userEmail."'") or mysql_error();
            $currentRate = mysql_fetch_array($findUser);
            $newrating = $currentRate['rating'] + 1;
            mysql_query("UPDATE users SET rating =".$newrating." WHERE email LIKE '".$userEmail."'")
            or mysql_error();      

        }
        else
        {
            die('ERROR');
        }
    }
echo $checkVal;
mysql_close(); 
?>
4

1 に答える 1

0

出力の最初または最後にある余分な文字は、PHP で時折遭遇するものです。サーバーからの生の出力を見ることを提案するコメントを大いに支持します。次の可能性についても考えてみてください。

スクリプト ファイルの先頭または末尾にある非表示の文字。非表示の文字を表示するテキスト エディタ (16 進エディタでも) を使用して、隠し文字があるかどうかを確認します。?>また、他に何もしていない場合は、php スクリプトを終了する必要はありません。最後に文字が表示されないようにするため、開いたままにしておくことができます。

スクリプトの文字エンコーディングを確認してください。これは解決策ではないかもしれませんが、少し前に、エンコードをバイトオーダーマークなしで UTF8 に変更したときに同様の状況が解消されました。同じことを試してみて、それが修正されるかどうかを確認してください

于 2012-10-01T06:21:45.367 に答える