如何使用javascript / PHP / CURL序列化.change事件中的表单输入?

时间:2013-03-13 16:14:04

标签: php javascript jquery ajax curl

我正在开发一个小项目,需要Ajax从数据库中获取数据并更新页面。对数据库的查询由用户即时构建,查询字符串构建为链。因此,例如,链的第一项影响下一个和下一个,依此类推。因此,它会创建一个我无法提前“知道”的帖子变量列表。我认为这将是一个非常简单的事情,但它证明不是。这是我的问题。

当我使用.changed事件并尝试在发布之前对表单进行seralize时。我只得到空弦。我注意到如果我对post变量进行硬编码,一切正常。有什么我想念的吗? .changed没有seralize方法吗?

我也在使用CURL桥,因为带有数据的服务器在另一个域上。我不认为这会引起任何问题。我相信这与我的活动选择有关。

以下是代码:

    $('#selector').change(function() {
        $.ajax({
            type: "post",
            dataType: 'json',
            url: "/pages/curlbridge.php",
            data: $("#queryform").serialize(), //"select=all&date=2013"
            success: function(data)
            {
                console.log(data);
                var resultset = data;

            }
        });

被要求附加HTML。这只是一个简单的表格

    <form id="selector">
        Select: <input type="text" id="select" />
        Date: <input type="text" id="date" />
    </form>
    <br />

2 个答案:

答案 0 :(得分:1)

我同意@ m1ket的#queryform不存在,虽然您不能在单个输入元素上使用serialize(),因此以下行不正确:

    data: $(this).serialize(), //"select=all&date=2013"

也许你能做的就是这个(它以#selector所属的形式获取所有数据):

    data: $(this).closest('form').serialize(), //"select=all&date=2013"

修改

我的不好,我没注意原始问题中发布的HTML

范围问题可能吗?这有用吗:

$('#selector').change(function() {
    var formData = $(this).serialize();
    $.ajax({
        type: "post",
        dataType: 'json',
        url: "/pages/curlbridge.php",
        data: formData, //"select=all&date=2013"
        success: function(data)
        {
            console.log(data);
            var resultset = data;

        }
    });
});

答案 1 :(得分:0)

$(“#queryform”)不存在。你的jQuery应该是这样的:

$('#selector').change(function() {
    $.ajax({
        type: "post",
        dataType: 'json',
        url: "/pages/curlbridge.php",
        data: $(this).serialize(), //"select=all&date=2013"
        success: function(data)
        {
            console.log(data);
            var resultset = data;

        }
    });
});

另外,你是否使用.change(),因为你想在每次用户输入密钥时提交AJAX请求?