Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Ajax向php函数发送搜索词和自定义标志_Php_Jquery_Ajax_Codeigniter - Fatal编程技术网

通过Ajax向php函数发送搜索词和自定义标志

通过Ajax向php函数发送搜索词和自定义标志,php,jquery,ajax,codeigniter,Php,Jquery,Ajax,Codeigniter,我正在寻找一种过滤自动完成结果的方法,如果自定义标志与搜索词一起发送到函数。例如,如果用户希望查找所有拥有体育场/游泳池等的城市,他可以选择此作为过滤选项 var filter = $.inArray('1', selectedTypes); 这一行只搜索一个标志以查看它是否工作 我已经设置了自动完成,没有过滤器也可以正常工作,但现在我不知道如何设置它。感谢您的帮助 jQuery: $('#city').autocomplete({ delay: 0, sour

我正在寻找一种过滤自动完成结果的方法,如果自定义标志与搜索词一起发送到函数。例如,如果用户希望查找所有拥有体育场/游泳池等的城市,他可以选择此作为过滤选项

var filter = $.inArray('1', selectedTypes);
这一行只搜索一个标志以查看它是否工作

我已经设置了自动完成,没有过滤器也可以正常工作,但现在我不知道如何设置它。感谢您的帮助

jQuery:

$('#city').autocomplete({
        delay: 0,
        source: function (request, response) {
            var selectedTypes = $("#filter").val();
            var filter = $.inArray('1', selectedTypes);

            $.ajax({
                url: "/cities/ajaxGetCities/" + request.term,
                dataType: "json",
                contentType: "application/json",
                success: function (data) {

                    if (typeof(data[0]) === 'undefined') {
                        return null;
                    }
                    response($.map(data, function (value, key) {
                        return {
                            label: value.cityName,
                            value: value.id
                        }
                    }));
                }
            });
        },
        select: function (event, ui) {
            $("#city").val(ui.item.label);
            return false;
        },
        autoFocus: true
    });
PHP(在控制器中,使用CodeIgniter):

我在JS中尝试了这一点,并删除了controller中的func参数,但$\u帖子是空的

$.ajax({
    type: 'POST',
    data: {term: request.term, flag: filter},
    url: "/cities/ajaxGetCities",
    dataType: "json",
    contentType: "application/json",
    success: function (data) {

    if (typeof(data[0]) === 'undefined') {
       return null;
    }
    response($.map(data, function (value, key) {
        return {
            label: value.cityName,
            value: value.id
        }
    }));
“该$\u帖子为空”

…这是因为由于指定了

contentType: "application/json"
在AJAX选项中。但是服务器期望什么呢?默认情况下,PHP需要的是标准格式的数据,而不是JSON。如果发送JSON,则需要一点额外的代码来处理它

如果您只是从AJAX选项中删除该行,那么数据将作为表单数据发送(默认设置),PHP应该能够将其作为标准POST变量读取

“该$\u帖子为空”

…这是因为由于指定了

contentType: "application/json"
在AJAX选项中。但是服务器期望什么呢?默认情况下,PHP需要的是标准格式的数据,而不是JSON。如果发送JSON,则需要一点额外的代码来处理它


如果您只是从AJAX选项中删除该行,数据将作为表单数据发送(默认设置),PHP应该能够将其作为标准POST变量愉快地读取。

您使用的是哪种PHP框架?我对php不太熟悉,但我认为这是关键..CodeIgniter@MoshFeu“the$\u POST为空”…这可能是因为您以JSON形式发送数据(由于
contentType:“application/JSON”
)…服务器期望什么?默认情况下,PHP需要的是标准格式的数据,而不是JSON。如果发送JSON,则需要一点额外的代码来处理它。我不知道CodeIgniter是否会帮你这么做。这里是否有使用JSON的特殊需要?试着删除contentType行,看看它是否有用。同样,也许答案会有帮助。@ADyson是的,那是错误,谢谢!你能把你的评论转换成答案吗?你使用的是哪个php框架?我对php不太熟悉,但我认为这是关键..CodeIgniter@MoshFeu“the$\u POST为空”…这可能是因为您以JSON形式发送数据(由于
contentType:“application/JSON”
)…服务器期望什么?默认情况下,PHP需要的是标准格式的数据,而不是JSON。如果发送JSON,则需要一点额外的代码来处理它。我不知道CodeIgniter是否会帮你这么做。这里是否有使用JSON的特殊需要?试着删除contentType行,看看它是否有用。同样,也许答案会有帮助。@ADyson是的,那是错误,谢谢!你能把你的评论转换成回答吗?