jQuery ajax返回undefined

时间:2012-11-19 07:04:39

标签: php jquery

我试图从我的数据库中返回一行,其中通过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一样。

1 个答案:

答案 0 :(得分:2)

问题是您没有以正确的方式发送数据。 jQuery将您分配给data:属性的值传递给jQuery.param。此函数将数据转换为正确的查询字符串。

但是如果传递一个数组而不是一个对象,.param期望它是一个对象数组,其中每个对象都有namevalue属性。

您可以通过直接调用.param来查看jQuery在您的案例中生成的内容:

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

如果传递

,则会获得正确的查询字符串
[{name: 'class', value: target}]

{'class': target}

两者都生成:

"class=<whatever the value of target is>"