为啥不传递更新的元素值?

Posted

技术标签:

【中文标题】为啥不传递更新的元素值?【英文标题】:Why are updated element values not being passed?为什么不传递更新的元素值? 【发布时间】:2012-10-17 03:14:10 【问题描述】:

我目前检查输入/文本区域/复选框/选择是否更改,如果是,那么我想启动我的函数来搜索数据库并更新“结果”div。现在这就是我到目前为止所拥有的......

它适用于更改没问题,唯一的问题是现在当我更改表单项时,它会检测到它,但新值不会传递给 .php 文件。有什么建议吗?

注意:我尝试使用 $(this).serialize();但这对我不起作用。我只是想将所有指定的表单变量传递给 PHP 文件。

$(document).ready(function()  

    $("select,:checkbox").change(function() inits(); );
    $("input,textarea").keystop(function() inits(); );

    a = "GET";
    b = "#recipeSearch";
    c = $(b).attr('action') + '?r';
    f = "#searchResults";

    function inits()

        var values = 
            'term' : $("input#searchterm").val(),
            'photos' : $(b + " #requirephotos").val(),
            'prep' : $(b + " #preptime").val(),
            'cook' : $(b + " #cooktime").val()
        

        console.log('Search Init');

        $.ajax(
            url: c,
            cache: false,
            dataType: 'json',
            data: values,  // $(b).serialize(); // this still didn't work
            success: function(response) 
                //decoded = JSON.stringify(response);

                if (response) 
                    $(f).html(response);
                

                //$.each(r.items, function(i,data) //usage later on 
            ,
            error: function(e, jqxhr, settings, exception) 
                console.log('Error: ' + e.toString() + ' - ' + jqxhr);
            
        );
    

);

感谢任何和所有建议。我没有 jsfiddle 给你,因为它使用另一个脚本作为 keystop。

JSON 示例


"items": [
        "item 1",
        "item 2",
        "item 3",
        "item 4",
        "item 5"
        ]

【问题讨论】:

你需要序列化表单,而不是$(this)。应该是$('#id_of_form').serialize() 尝试从b 中删除&jQuery.ajax 会在必要时自动添加(它会检查 URL 是否已经包含 ?)。结果是您发送URL?r&&term=...,这可能无法正常工作。 @Barmar - 我已经进行了这些更改,但现在我收到了解析器错误。 听起来 PHP 脚本没有返回正确的 JSON。 @Barmar 它返回具有正确标题的有效 json(我已将其注释掉)但现在 jQuery 返回 null。想法? 【参考方案1】:

我已经解决了这个问题。不知道是什么问题,但现在已经解决了。

编辑修复是..我想我可以将其缩小到服务器端问题。如果请求文件在白名单上,我从中检索的 php 文件仅提供信息,但我的文件不在,并将其添加到白名单解决了问题。

【讨论】:

您是否可以提供更多详细信息,以便此答案可以帮助将来遇到类似问题的人? 嗯,我想我可以将其缩小到服务器端问题。如果请求文件在白名单上,我从中检索的 php 文件仅提供信息,但我的文件不在,并将其添加到白名单解决了问题。

以上是关于为啥不传递更新的元素值?的主要内容,如果未能解决你的问题,请参考以下文章

为啥切片追加元素不更新引用的元素?

更新:如何将默认值传递给我的模态输入元素

Dart/Flutter:当作为参数传递时,List 中的元素字符串变为空(为啥??)

为啥我的 jQuery 代码不更新加载到视频元素中的实时图像?

为啥临时变量需要更改数组元素以及为啥需要在最后取消设置?

为啥通过 ParamArray 将数组元素传递给函数时,varpointer 会到达函数中?