3

私はこれまでにこれほど奇妙なものに遭遇したことはありません。jQuery を使用して Ajax リクエストを発行し、mysql から値を取得します。

$.ajax({
    url: 'ajaxClassificationCheck.php?category='+category,
    cache: false,
    success: function(returnClass)
    {
        $("#classification").val(returnClass);
}});

そしてphp...

include_once ('functions.php');
connectdb();

$category = $_GET['category'];

$q = "SELECT classification_id FROM sch_category WHERE category_id = $category";

$r = mysql_query($q) or die (mysql_error());
$row = mysql_fetch_assoc($r);
$classification = $row['classification_id'];
echo $classification;

ネットワーク キャプチャの結果は、空である ajax 要求からの出力を示しています。

私が変更した場合:

echo $classification;

echo "result is $classification";

出力:

result is 2

また、以下でも機能します。

echo "a".$classification;

出力:

a2

Ajax 経由で返される文字数に最小文字制限はありますか?

編集

ご提案いただきありがとうございます

@RocketHazmat - dataType: 'text' を試しましたが、まだ単一の整数が返されません。間違いなく echo $classification; を使用します。

@dualed - URL をブラウザ ウィンドウに入力すると、正しい整数応答が得られるため、ajax に問題があります。

他のアイデアはありますか?

4

1 に答える 1

2

で、$.ajaxどのコンテンツタイプが期待されるかを指定する必要があります。あなたの場合は「html」なので、

$.ajax({
  ...
  dataType : 'html'
});

ただし、これの代わりに、dataType'json'を使用して、phpスクリプトの最後の行をに変更することをお勧めしますjson_encode($classification)。dataTypeを指定しない場合、jQueryはインテリジェントな推測を行い、奇妙な動作を引き起こす可能性があります。

そして、 SQLインジェクションについて何か読んでください

于 2012-10-25T16:50:17.887 に答える