【问题标题】:How to fix this undefined index error? Ajax to PHP如何修复这个未定义的索引错误? Ajax 到 PHP
【发布时间】:2016-06-17 02:58:25
【问题描述】:

注意:未定义索引:在 C:\xampp\htdocs\Java\Search\instant-search.php 中的第 71 行查询
{“名称”:[]}

这是我的 PHP

$query=$_POST["query"];
$matchType=isset($_POST["match_type"])? $_POST["match_type"]:MatchType::CONTAINS;

processRequest($query,$matchType);

这是我的 ajax 脚本

$("#query").keyup(function(){
    var q=$(this).val();
    var match_type=$("input[type=radio]:checked").val();
    var data={'query':q,'match_type':match_type};
    if(q.length==0){
        $("#results").html("");
        return false;

        $.ajax({
            url:"/Java/Search/instant-search.php",
            data:data,
            type:"post",
            dataType:"json",
            success:function(res)  {
                var tmpl=$("#names_tmpl").html();
                var html=Mustache.to_html(tmpl,res);

                $("#results").html(html);
            }
        });

【问题讨论】:

  • 欢迎使用SO,如果你想添加代码使用{}按钮或缩进4个空格的代码,只有当你想添加可以在浏览器中运行的代码时才使用sn-ps。跨度>
  • 你确定qmatch_type 是防御者吗?尝试运行console.log(data)
  • 首先检查是否获取值..console.log(q); 和 console.log(match_type);而不是将数据用作data="query="+q+"&match_type="+match_type,
  • 是的,我已经这样做了。对不起,我刚开始学习jquery。他们都在获得价值
  • 您是否在console.log(q);console.log(match_type); 中都获得了值

标签: javascript php jquery ajax database


【解决方案1】:

根据您的 cmets,如果 match_typeq 都在获取值而不是使用带有 data 的 ajax 作为:

$.ajax({ 
   url:"/Java/Search/instant-search.php", 
   data: "query="+q+"&match_type="+match_type , 
   type:"post", 
   dataType:"json", 
   success:function(res) { 
     var tmpl=$("#names_tmpl").html(); 
     var html=Mustache.to_html(tmpl,res);
     $("#results").html(html); 
   } 
});

【讨论】:

  • 仍然无法正常工作,我猜可能是它的连接,我是否需要更改我的 url 或我的 php 文件?
  • @shiroo 在更改之前也测试其他答案。也许改变。类型到方法将起作用。
  • @shiroo: 使用isset() 两个$query=isset($_POST["query"]) ? $_POST["query"] : ""; 其他字段相同
  • @shiroo 还在寻找答案吗?
【解决方案2】:

要更改请求的类型,请使用 method 属性而不是 type 并使用大写字符串 POST jQuery.ajax

   $.ajax({
        url: "/Java/Search/instant-search.php",
        data: data,
        method: "POST",
        dataType: "json",
        success: function(res) {
            var tmpl=$("#names_tmpl").html();
            var html=Mustache.to_html(tmpl,res);

            $("#results").html(html);       
        }
    });

【讨论】:

  • 仍然未定义索引
  • @Shiroo 你在检查开发者工具中的响应吗?
  • 根据链接的文档: - type 是方法的别名,目前应该没问题。 - type 的参数是大写的,所以它应该是type or method: 'POST'。如果参数错误,它将退回到GET
  • @cypherabe.. 不同意的朋友你有资源吗?
  • @devpro 这就是我在链接的 api 描述中读到的内容(this (jcubic's ) answer)。我解释错了吗?
猜你喜欢
  • 2011-12-24
  • 1970-01-01
  • 2021-05-12
  • 1970-01-01
  • 1970-01-01
  • 2018-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多