0

jquery経由でphpに送信されたIDがフィールド値と一致するデータベースから行を返そうとしています。私は未定義に戻ってきており、それから抜け出すことができないようです。

私のjquery:

function renderPreview( event ) {
    target = event.target.id;

    console.log(target) // should say the id name

            $('#results').removeClass();
            $('#results').addClass(target).html( $('#textInput').val() );
            $('html, body').animate({ scrollTop: 600}, "slow");

    console.log('start ajax')

    $.ajax({
        url: '../test.php',
        type: 'POST',
        data: [{'class' : target}],
        dataType: 'json',
        success: function(data) {
            var id = data[0];
            var name = data[1];
            var style = data[2];
            $('#codeTest').html("<b>id: </b><br />"+id+"<br /><b> name: </b><br />"+name+"<br /><b> style: </b><br />"+style);
        }
    });
};

PHP:

$dbstylename = $_POST['class'];
$result = mysql_query("SELECT * FROM style where stylename like '$dbstylename'");
$array = mysql_fetch_row($result);

echo json_encode($array);

mysql_close($con);
?>

また、jquery または php に配置して、chrome 開発者コンソールでどのようなクエリが実行されているかを確認できるコード行はありますか?...既に持っている console.logs のように。

4

1 に答える 1

2

問題は、正しい方法でデータを送信していないことです。data:jQuery は、プロパティに割り当てた値を に渡していますjQuery.param。この関数は、データを適切なクエリ文字列に変換します。

ただし、オブジェクトの代わりに配列を渡す場合、.paramはそれがオブジェクトの配列であると想定し、各オブジェクトにはnameandvalueプロパティがあります。

.param直接呼び出すことで、ケースで jQuery が生成するものを確認できます。

> jQuery.param([{'class' : target}])
  "undefined=undefined"

どちらかを渡すと、正しいクエリ文字列が得られます

[{name: 'class', value: target}]

また

{'class': target}

どちらも次を生成します。

"class=<whatever the value of target is>"   
于 2012-11-19T07:44:33.093 に答える