$(form id).serialize()返回空字符串

时间:2015-06-10 16:16:28

标签: php jquery html ajax

我有一个简单的搜索表单,其内容我想作为POST请求发送到我的php查询。我使用AJAX发送它,到目前为止一切正常,但由于某种原因而不是发送输入字段的实际值,它总是发送一个空字符串。

有人可以解释一下我在这里做错了吗?

我的HTML:

<form id="searchbox">
    <input type="text" placeholder="author, title, keyword...">
    <input type="submit" value="Search">
</form>

我的js(console.log行是为了查看发布的内容,即检查我的代码有什么问题):

$("#searchbox").submit(function(e) {
    e.preventDefault();
    console.log($("#searchbox").serialize());
    $.post(
        "db_queries/all_articles.php",
        $( "#searchword" ).serialize(),
        function(data) {
            console.log(JSON.parse(data));
        } //end response function
        ); //end search article POST request
})

我的php:

try {
    $hostname = "localhost";
    $username = "root";
    $password = "";

    $db = new PDO("mysql:host=$hostname;dbname=topdecka_PTC",$username, $password);

    if (!empty($_POST)) {
        $query = $db->prepare('SELECT * FROM articles WHERE title = :title');
        $query->execute(array(':title' => 'test1'));

        $result = $query->fetchAll(PDO::FETCH_ASSOC);
        echo json_encode($result);
        die();
    } 
    else {
        $query = $db->prepare('SELECT * FROM articles');
        $query->execute();

        $result = $query->fetchAll(PDO::FETCH_ASSOC);
        echo json_encode($result);
        die();
    }
} catch (PDOException $e) {
    echo "Error!: " . $e->getMessage() . "<br/>";
    die();
}

1 个答案:

答案 0 :(得分:1)

您的输入标记必须具有name属性才能被序列化。