自动完成POSTing逗号分隔值或数组

时间:2012-01-24 03:58:53

标签: jquery mysql json autocomplete

所以现在我的autosuggest正在工作......我想让我的表单实际POST到输入值。所以目前如果我只运行search.php,我会得到以下内容:

{“label”:“Henry Gale”,“value”:“henrygale@gmail.com”},{“label”:“Amy Gerges”,“value”:“amy@yahoo.com”},以及这个清单还在继续。

因为搜索工作正常。现在,我想只发布我在表单输入字段中放置的值。我目前有:

<script>
$(document).ready(function() {
    $( "#autocomp" ).autoSuggest("search.php", {
        minChars: 2, 
        selectedItemProp: "label", 
        searchObjProps: "label", 
                    selectedValuesProp: "value",
        selectionLimit: 8, 
        formatList: function(data, elem){
            var my_image = data.image ;
            var my_label = data.label;
            var new_elem = elem.html(my_image + my_label);
            return new_elem;}
    });
}); </script> <input name="contacts[]" type="text" id="autocomp" maxlength="35" />

因此,如果我对$ _POST ['contacts']进行回音,我会得到一个词:Array

我做错了什么,只是不确定是什么...因为我的输入得到了逗号分隔的电子邮件(值)列表,我怎么能将这些发布到数组中,所以我可以用电子邮件做事(通过格式检查运行它们,将它们插入到mysql数据库中等等。)

1 个答案:

答案 0 :(得分:0)

为什么您的<input> name属性等于"contacts[]"?如果您打算从输入的数据项中创建PHP数组,则需要在服务器端执行此操作 - 简单的JavaScript和HTML无法为您创建PHP数组。

我不是100%确定jQuery Autosuggest是如何工作的,但是从您的代码看,它似乎允许用户从自动完成列表中选择最多8个项目(我可能错了)。在任何情况下,由于您说您将获得以逗号分隔的电子邮件列表作为输入,您必须在服务器上将它们分开并分别验证每封电子邮件。您可以使用PHP explode()函数将它们分开。验证后,您可以将结果数组的元素添加到数据库中。

我会将name的{​​{1}}参数更改为<input>