首頁  >  文章  >  後端開發  >  js中ajax提交到php的json資料,php無法取得

js中ajax提交到php的json資料,php無法取得

WBOY
WBOY原創
2016-09-19 09:16:401112瀏覽

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

確定能夠獲得到表單元素的數據,html的網址列提交的時候能顯示所有提交數據
在insert.php中

<code>$type =  $_POST['type'];
$title = $_POST['title'];
$imgSrc = $_POST['imgSrc'];
$author = $_POST['author'];
$createdAt = $_POST['createdAt'];
$content = $_POST['content'];</code>

無法取得傳過來的數據,提示
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不能取得,哪位大神給我看看程式碼,萬分感激

回覆內容:

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

確定能夠獲得到表單元素的數據,html的網址列提交的時候能顯示所有提交數據
在insert.php中

<code>$type =  $_POST['type'];
$title = $_POST['title'];
$imgSrc = $_POST['imgSrc'];
$author = $_POST['author'];
$createdAt = $_POST['createdAt'];
$content = $_POST['content'];</code>

無法取得傳過來的數據,提示
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不能取得,哪位大神給我看看程式碼,萬分感激

因為你向後台發送的是一個物件data,所以我猜你可以從後台獲得$_POST['data']。

我簡單實驗一下,
你的

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

這段寫的問題吧,不加帶引號? type:type 前面的type是字串後面的type是變量,你感受一下....

我的程式碼:

1.html

<code><!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></code>

2.php

<code>
<?php

$a = $_POST;

print_r($a);
echo json_encode($a);

?></code>

就是你傳遞的資料出現錯誤了 data應該寫成json的格式。樓上已經說得很清楚了。

因為你封裝的是JS物件而不是json,正規的json, 鍵都是帶引號的,可以使用 JSON.stringify把物件轉成字串後再提交,建議你還是去看看json的規範。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn