Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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
php oop jquery ajax:未定义索引_Php_Jquery_Ajax - Fatal编程技术网

php oop jquery ajax:未定义索引

php oop jquery ajax:未定义索引,php,jquery,ajax,Php,Jquery,Ajax,如何解决未定义的索引错误?请参阅下面的代码 论产品类别 public function add(){ var_dump($_POST); $pname = $_POST['pname']; echo $pname; } ajax代码: $('#productsform').on('submit', function(event){ event.preventDefault(); var data = $('#productsform').serializ

如何解决未定义的索引错误?请参阅下面的代码

论产品类别

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 />
数组(2){
[“行动”]=>
字符串(3)“添加”
[“数据”]=>
字符串(29)“pname=asdadsad&pprice=&pdesc=”
}

注意:第25行的D:\xampp\htdocs\prince2\classes\Products.php中的未定义索引:pname
我已经键入“asdadsad”作为命名pname的输入

请帮助更改如下内容:

$('#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);
      }
    });
});

谢谢你,一切正常,所有文本框的未定义索引都消失了。。但select选项的未定义索引仍然显示在控制台日志上。我的表单由3个texbox 2个选择选项和1个输入类型文件组成。这意味着您需要在codehi ahmed中声明选择选项变量。我认为.serialize()将在具有name属性的表单中获取标记的所有值,因此我怀疑.serialize()无法获取选择选项标记。您可以将该数据添加为$(“#productsform”).serialize()+”&moredata=“+morevalue