为什么我的ajax帖子功能无法点击按钮?

时间:2015-04-13 09:28:48

标签: javascript php jquery ajax html-form-post

当我使用AJAX点击按钮时,我试图将变量发布到我的PHP文件,但当我检查PHP页面加载时,我没有收到变量。

$(document).ready(function(){
    $("#qryBtn").click(function(){
        // post qry //
        var qry = query();
        $.ajax({
            type: "POST",
            url: "favourites.php",
            data: {
                qry: qry
            },
            success: function (html) {
                console.log (qry);
            }
        });
    });
});

其中query()只是一个创建数组的函数。

error_reporting ( E_ALL );
ini_set ( 'display_errors', 1 );
$query = "";
$key = "";
function getQueries() {
    if (isset ( $_POST ['qry'] )) {
        $query = $_POST ['qry'];
        echo $query;
    } else {
        echo "Query Missing";
    }
}
getQueries ();
function saveQueries() {
    if (isset ( $_POST ['keyValue'] )) {
        $key = $_POST ['keyValue'];
        $arr = array_combine ( $key, $query );
    } else {
        echo "Key Missing";
    }
}
saveQueries ();

输出:

  

查询MissingKey Missing

我使用类似的程序将数据发布到PHP页面但没有使用按钮点击,是否有一些我不知道的东西?

2 个答案:

答案 0 :(得分:1)

可能是因为您没有声明内容类型。

按如下方式更改脚本。

$(document).ready(function(){
    $("#qryBtn").click(function(){
        // post qry //
        var qry = query();
        $.ajax({
            type: "POST",
            url: "favourites.php",
            data: {
                qry: qry
            },
            contentType: 'application/json',
            success: function (html) {
                console.log (qry);
            }
        });
    });
});

当您以application/x-www-form-urlencoded; charset=UTF-8格式发布数据时,默认jquery ajax内容类型为json,因此您必须通过将内容类型声明为a来明确告知ajax您正在发送json内容application/json

EDIT

然后将数据作为字符串内容发送。尝试以下脚本。 (请注意我已删除contentType选项。

$(document).ready(function(){
        $("#qryBtn").click(function(){
            // post qry //
            var _data= JSON.stringify({qry:query()}); 
            $.ajax({
                type: "POST",
                url: "favourites.php",
                data: _data,
                success: function (html) {
                    console.log (qry);
                }
            });
        });
    });

答案 1 :(得分:0)

$(document).ready(function(){
    $("#qryBtn").click(function(){
        // post qry //
        var qry = query();
        qry = JSON.stringify(qry); // added this line
        $.ajax({
            type: "POST",
            url: "favourites.php",
            data: {
                qry: qry
            },
            success: function (html) {
                console.log (qry);
            }
        });
    });
});