>  기사  >  백엔드 개발  >  js의 ajax가 PHP에 제출한 json 데이터를 php에서 얻을 수 없습니다.

js의 ajax가 PHP에 제출한 json 데이터를 php에서 얻을 수 없습니다.

WBOY
WBOY원래의
2016-09-19 09:16:401086검색

<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>

전달된 데이터를 가져올 수 없습니다.
주의사항: 정의되지 않은 색인: 3행에 D:xampphtdocs8-1baiduNewsinsert.php를 입력하세요

공지: 정의되지 않은 색인: 4행의 D:xampphtdocs8-1baiduNewsinsert.php 제목

공지: 정의되지 않은 인덱스: 5행의 D:xampphtdocs8-1baiduNewsinsert.php에 있는 imgSrc

공지: 정의되지 않은 색인: 6행의 D:xampphtdocs8-1baiduNewsinsert.php의 작성자

공지: 정의되지 않은 인덱스: 7행의 D:xampphtdocs8-1baiduNewsinsert.php의 createAt

공지: 정의되지 않은 색인: 8행의 D:xampphtdocs8-1baiduNewsinsert.php 내용

저는 처음으로 PHP를 사용합니다. js와 노드 데이터 상호작용을 작성할 때 데이터 전송 양식을 사용했는데, 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>

전달된 데이터를 가져올 수 없습니다.
주의사항: 정의되지 않은 색인: 3행에 D:xampphtdocs8-1baiduNewsinsert.php를 입력하세요

공지: 정의되지 않은 색인: 4행의 D:xampphtdocs8-1baiduNewsinsert.php 제목

공지: 정의되지 않은 인덱스: 5행의 D:xampphtdocs8-1baiduNewsinsert.php에 있는 imgSrc

공지: 정의되지 않은 색인: 6행의 D:xampphtdocs8-1baiduNewsinsert.php의 작성자

공지: 정의되지 않은 인덱스: 7행의 D:xampphtdocs8-1baiduNewsinsert.php의 createAt

공지: 정의되지 않은 색인: 8행의 D:xampphtdocs8-1baiduNewsinsert.php 내용

저는 처음으로 PHP를 사용합니다. js와 노드 데이터 상호작용을 작성할 때 데이터 전송 양식을 사용했는데, PHP에서 코드를 얻을 수 없습니다.

객체 데이터를 백그라운드로 보내기 때문에 백그라운드에서 $_POST['data']를 얻을 수 있을 것 같습니다.

간단한 실험을 해보겠습니다.
당신

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

이 문단을 따옴표 없이 쓰기 위한 질문인가요? 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>

전달한 데이터에 오류가 있습니다. 데이터는 json 형식으로 작성해야 합니다. 위에서 매우 명확하게 설명되었습니다.

json 대신 JS 객체를 캡슐화하기 때문에 일반 json의 경우 키가 모두 따옴표로 묶여 있습니다. 객체를 제출하기 전에 JSON.stringify를 사용하여 객체를 문자열로 변환하는 것이 좋습니다. json.사양.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.