search

Home  >  Q&A  >  body text

js中ajax提交到php的json数据,php无法获得

$('#saveNewData').click(function () {
            //保存数据的按钮被点击的时候,获得当前数据
            var type = $('select[name="type"] option:selected').val();
            var title = $('input[name="title"]').val();
            var imgSrc = $('input[name="imgSrc"]').val();
            var author = $('input[name="author"]').val();
            var createdAt = $('input[name="createdAt"]').val();
            var content = $('textarea[name="content"]').val();
          
            //封装数据
            var data = {
                type:type,
                title:title,
                imgSrc:imgSrc,
                author:author,
                createdAt:createdAt,
                content:content
            };
            //ajax提交数据
            $.ajax({
                type: "POST",
                url:'insert.php',
                data:data,
                datatype:'json',
                error: function(request) {
                    alert("保存失败");
                },
                success: function(msg) {
                    alert("保存成功");
                    alert(data);
                }
            });
        })

确定能够获得到表单元素的数据,html的地址栏提交的时候能显示所有提交数据
在insert.php中

$type =  $_POST['type'];
$title = $_POST['title'];
$imgSrc = $_POST['imgSrc'];
$author = $_POST['author'];
$createdAt = $_POST['createdAt'];
$content = $_POST['content'];

无法获得传过来的数据,提示
Notice: Undefined index: type in D:xampphtdocs8-1baiduNewsinsert.php on line 3

Notice: Undefined index: title in D:xampphtdocs8-1baiduNewsinsert.php on line 4

Notice: Undefined index: imgSrc in D:xampphtdocs8-1baiduNewsinsert.php on line 5

Notice: Undefined index: author in D:xampphtdocs8-1baiduNewsinsert.php on line 6

Notice: Undefined index: createdAt in D:xampphtdocs8-1baiduNewsinsert.php on line 7

Notice: Undefined index: content in D:xampphtdocs8-1baiduNewsinsert.php on line 8

第一次用php,以前写js和node数据交互的时候用的那样的数据传递形式,但是php不能获得,哪位大神给我看看代码,万分感激

巴扎黑巴扎黑2932 days ago656

reply all(4)I'll reply

  • 巴扎黑

    巴扎黑2017-04-11 10:24:35

    因为你向后台发送的是一个对象data,所以我猜你可以从后台获得$_POST['data']。

    reply
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-11 10:24:35

    我简单实验一下,
    你的

                //封装数据
                var data = {
                    type:type,
                    title:title,
                    imgSrc:imgSrc,
                    author:author,
                    createdAt:createdAt,
                    content:content
                };

    这段写的问题吧,不加带引号?type:type 前面的type是字符串后面的type是变量,你感受下....

    我的代码:

    1.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>
        </title>
        <script src="http://lib.sinaapp.com/js/jquery/3.1.0/jquery-3.1.0.min.js"></script>
    </head>
    <body>
        <input id='qq' type="text" name='qq123' value='xiaole' >
        <input id='qq123' type="submit">
        <script>
        $('#qq123').click(function () {
            var data = $('#qq').val();
            // console.log(data);
            var data={'data':data};
            $.ajax({
                    type: "POST",
                    url:'2.php',
                    data:data,
                    datatype:'json',
                    error: function(request) {
                        alert("保存失败");
                    },
                    success: function(msg) {
                        console.log(msg);
                        
                    }
                });
        });
        </script>
    </body>
    </html>

    2.php

    
    <?php
    
    $a = $_POST;
    
    print_r($a);
    echo json_encode($a);
    
    ?>

    reply
    0
  • ringa_lee

    ringa_lee2017-04-11 10:24:35

    就是你传递的数据出现错误了 data应该写成json的格式。楼上已经说得很清楚了。

    reply
    0
  • 高洛峰

    高洛峰2017-04-11 10:24:35

    因为你封装的是JS对象而不是json,正规的json, 键都是都是带引号的,可以使用 JSON.stringify把对象转成字符串后再提交,建议你还是去看看json的规范。

    reply
    0
  • Cancelreply