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属性。

您可以通过直接调用来查看 jQuery 在您的情况下生成的内容.param

> 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 回答