AJAX请求提供了未定义的索引' PHP中的错误

时间:2016-10-03 07:57:49

标签: javascript php jquery ajax

我从此AJAX调用中获得undefined index(return data)。我在这做错了什么?请纠正我。

$(document).ready(function() {
    $('#something').click(function() {
        edit(1, 'abc', 'xyz');
    });

    function edit(id, column, text) {
        $.ajax({  
            url: "edit.php",  
            method: "POST",  
            data: {
                id: id, 
                text: text, 
                column: column
            },  
            dataType: "text",  
            success: function(data) {  
                 console.log(data);  
            }  
        });      
    }
});

edit.php

echo $_POST["id"];

我在控制台中得到这个:

  

注意:未定义的索引: C:\ xampp \ htdocs \ datatable \ edit.php 中的行 2

7 个答案:

答案 0 :(得分:2)

尝试使用

  

输入:“POST”

而不是

  

方法:“POST”

   ...$.ajax({  
        url: "edit.php",  
        type: "POST",  
        data: {
            id: id, 
            text: text, 
            column: column
        }.....

它是否仍然作为GET请求归类?我认为这是因为你的jQuery版本。

来自docs

type (default: 'GET')
Type: String
An alias for method. You should use type if you're using versions of jQuery prior to 1.9.0.

答案 1 :(得分:1)

您使用的是哪个版本的JQuery?尝试更改

method: "POST",

type: "POST",

答案 2 :(得分:0)

我认为问题在于你编写json数组键的方式。

尝试对数据json中的键使用双引号,如下所示:

data:{"id":id, "text":text, "column":column}

或为变量和键使用不同的名称。

答案 3 :(得分:0)

我认为网址是:" edit.php"无法在您的服务器中访问。

Normaly,如果你在当地的服务器上;所以你将你的网址更改为:

" http://localhost/yourproject/edit.php"

  $.ajax({  
            url:"http://localhost/yourproject/edit.php",  
            method:"POST",  
            data:{id:id, text:text, column:column},  
            dataType:"text",  
            success:function(data){  
                 console.log(data);  
            }  
        });      

答案 4 :(得分:0)

尝试这个,你可以添加内容类型json,如果你想用PHP $ _POST得到它。我不确定这个,但它适用于我的Angular

function edit(id, column, text) {
    $.ajax({  
        url: "edit.php",  
        method: "POST",  
        data: {
            id: id, 
            text: text, 
            column: column
        },  
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(data) {  
             console.log(data);  
        }  
    });      
}

答案 5 :(得分:0)

请尝试使用此代码

/* start */ 
$(document).ready(function() {

$('#something').click(function() {

    var sendData = {
        url : '1',
        method : 'abc',
        column : 'xyz'
    };

    edit(sendData);

});

function edit(id, column, text) {
    $.ajax({
        type: "POST",
        url: "edit.php",
        data: sendData,
        success: function(response){
            console.log(data);
        }
    });   
} 
});

/* end */

答案 6 :(得分:0)

经过多次努力,我得到了答案。

even though after specifying method as  POST  ajax is sending it as a GET

(为什么?我不知道是否有人知道请发表您的答案)。

只有更改ID(edit.php)

<强> edit.php

echo $ _GET ['id'];