2017-04-25 135 views
-1

如何解决未定义的索引错误?请参阅下面的我的代码php oop jquery ajax:未定义索引

的产品类别

public function add(){ 
    var_dump($_POST); 
    $pname = $_POST['pname']; 
    echo $pname; 
} 

Ajax代码:

$('#productsform').on('submit', function(event){ 
    event.preventDefault(); 
    var data = $('#productsform').serialize(); 
    $.ajax({ 
     url:'action.php', 
     data: {'action': 'add', 'data': data}, 
     type: 'post', 
     success: function(response) { 
     console.log(response); 
     } 
    }); 
}); 

这里是action.php的

include_once('classes/Products.php'); 

$product = new Products(); 

if(isset($_POST['action'])){ 
    if($_POST['action'] == 'add'){ 
     $product->add(); 
     exit(); 
    } 
} 

现在,在控制台日志输出:

array(2) { 
    ["action"]=> 
    string(3) "add" 
    ["data"]=> 
    string(29) "pname=asdadsad&pprice=&pdesc=" 
} 
<br /> 
<b>Notice</b>: Undefined index: pname in <b>D:\xampp\htdocs\prince2\classes\Products.php</b> on line <b>25</b><br /> 

我已经输入“asdadsad”作为命名PNAME输入..

请帮助

回答

0

变化是这样的:

$('#productsform').on('submit', function(event){ 
    event.preventDefault(); 
    var data = $('#productsform').serialize(); // pass action in hidden field 
    $.ajax({ 
     url:'action.php', 
     data: data, 
     type: 'post', 
     success: function(response) { 
     console.log(response); 
     } 
    }); 
}); 
+0

谢谢它的工作原理,对所有文本框的未定义的指标都没有了。 。但是尚未定义的select选项索引仍然显示在控制台日志中。 我的表单由3个texbox 2选择选项和1个输入类型文件组成。 –

+0

这意味着你需要在代码 –

+0

中声明选择选项变量嗨ahmed,我认为.serialize()将获得具有name属性的表单中所有标记的值,所以我想知道.serialize()不能获取选择标签 –