数据不是通过JQuery / AJAX发送的

时间:2012-02-10 12:21:01

标签: jquery ajax json

我试图通过JQuery / AJAX将输入框的内容发送到php文件。当脚本运行时,一切似乎都很好,但是,我什么都没收到。以下是我的ajax电话;

$(document).ready(function(){

$("#kinaseEntry").change(function ()    {

    var kinaseEntry = $("#kinaseEntry").val();
    var dataString = "kinaseEntry=" + kinaseEntry;

    $("#waiting").show(500);
    $("#message").hide(0);
    alert(kinaseEntry);

    //Fetch list from database
    $.ajax({
        type : "GET",
        url : "post.php",
        datatype: "json",
        data:   dataString,
        success : function(datas)   {
            $("#message").show(500);
            $("#message").html(datas);
            alert(datas);
        }
    });
    return false;
});
});

脚本运行后,我在地址栏中得到以下结果;

  

http://www.someaddress.com/test/?kinaseEntry=#

我将非常感谢任何帮助,我只是开始熟悉JSON。

这是测试php文件的结果表单

{"kinaseSKU":"ABL1","url":"https:\/\/products.beta.invitrogen.com\/ivgn\/en\/US\/adirect\/invitrogen?cmd=catProductDetail&showAddButton=true&productID=P3049","molecularWeight":"125.4 kDa","tracerSKU":"","antiSKU1":"","antiSKU2":"","bufferSKU":"","tracerConc":"","assayConc":""}

输入表单如下;

<form id="form" action="#">
<p>To begin, start typing a Kinase:</p>
<input type="text" size="25" name="kinaseEntry" id="kinaseEntry" />
</form>

3 个答案:

答案 0 :(得分:1)

var dataString = "kinaseEntry=" + kinaseEntry;

由于问题是您没有收到来自操作网址的反馈,因此您可能需要检查post.php。此外,如果您使用数据类型json,请确保执行以下操作:

header("Content-type:application/json");
echo json_encode($variable); //where variable is your result

如果您将json指定为数据类型

,则JQuery对接收的内容类型严格

答案 1 :(得分:0)

来自the docs

  

data选项可以包含表单的查询字符串   key1=value1&key2=value2,或{key1: 'value1', key2: 'value2'}形式的地图。如果使用后一种形式,则将数据转换为a   在发送之前使用jQuery.param()查询字符串。这个处理   可以通过将processData设置为false来规避。处理   如果您希望将XML对象发送到服务器,则可能不合需要;   在这种情况下,请更改contentType选项   application / x-www-form-urlencoded为更合适的MIME类型。

您只是发送一个纯字符串,而不是一个键/值对。尝试在字符串中添加=或使用地图。

答案 2 :(得分:0)

试试这个:

$(document).ready(function(){
    $("#kinaseEntry").change(function ()    {
        $("#waiting").show(500);
        $("#message").hide(0);

        //Fetch list from database
        $.getJSON("post.php", {
            kinaseEntry : $(this).val()
        }, function (datas) {
            $("#message").html(datas);
        })

        return false;
    });
});

对我来说似乎更容易...... =]希望这会有所帮助.. =]