首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我在0 parsererror位置得到JSON中的错误意外令牌<?

问为什么我在0 parsererror位置得到JSON中的错误意外令牌<?
EN

Stack Overflow用户
提问于 2016-08-22 07:58:04
回答 3查看 1.3K关注 0票数 1

我只有一个表单将数据提交到PHP文件中,该文件将post数据插入到CSV文件中,我正在升级此表单以使用ajax,这样用户就不必在提交时刷新页面,

但是我遇到了一个问题,我得到了错误

位置0处的JSON中的意外令牌<

我不太清楚这意味着什么,我已经在我的开发服务器上测试了这个表单,它很有魅力,我反复复制它,并对表单ID进行了一些小小的调整,以验证它的字段等等,但是现在我收到了错误,我不知道为什么,有什么想法吗?

代码语言:javascript
复制
  <form id="form2" name="form2">
    <div id="response"></div>
    <table>
        <tr><td><input type="text" name="fname" id="fname" placeholder="First Name"/></td><td><input type="text" name="lname" id="lname" class="required" placeholder="Surname"/></td></tr>
        <tr><td><input type="text" name="email" id="email" placeholder="Email"/></td><td><input type="text" name="postcode" id="postcode" placeholder="Postcode"/></td></tr>
        <tr><td colspan="2">
            <p>Safe Combination</p>
            <select name="number1">
                <option value="0">0</option>
                <option value="1">1</option>
                ...
            </select>
            <select name="number2">
                <option value="0">0</option>
                <option value="1">1</option>
                ...
            </select>
            <select name="number3">
                <option value="0">0</option>
                <option value="1">1</option>
                <option value="2">2</option>
                ...
            </select>
            <select name="number4">
                <option value="0">0</option>
                <option value="1">1</option>
                ...
            </select>
            <select name="number5">
                <option value="0">0</option>
                <option value="1">1</option>
                ...
            </select>
            <select name="number6">
                <option value="0">0</option>
                <option value="1">1</option>
                ...
            </select></td></tr>
        <tr><td colspan="2"><input class="btn btn-danger" type="submit" value="SUBMIT" id="submit" name="submit"/></td></tr>
    </table>
</form>

JS

代码语言:javascript
复制
<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha256-cCueBR6CsyA4/9szpPfrX3s49M9vUU5BgtiJj06wt/s=" crossorigin="anonymous"></script>
        <script type="text/javascript">
            $(document).ready( function(){
                $('form#form2').submit(function (e) {

                    e.preventDefault();

                    // Get the Login Name value and trim it
                    var fname = $.trim($('#fname').val());
                    var lname = $.trim($('#lname').val());
                    var email = $.trim($('#email').val());
                    var postcode = $.trim($('#postcode').val());
                    // Check if empty of not

                    var valid = '';

                    if (fname  === '') {
                        //alert('First Name is empty.');
                        valid+ 'First Name is empty.'; 
                        //return false;
                    }
                    if (lname  === '') {
                        //alert('Last Name is empty.');
                        valid+ 'Last Name is empty.'; 
                        //return false;
                    }
                    if (email  === '') {
                        //alert('Email is empty.');
                        valid+ 'Email is empty.'; 
                        //return false;
                    }
                    if (postcode  === '') {
                        //alert('Postcode is empty.');
                        valid+ 'Postcode is empty.'; 
                        //return false;
                    }
                    if(valid != '') {
                        $('#form2 #response').addClass('alert alert-danger').html("Errors - " + valid)
                    } else {
                        $('#form2 #response').removeClass('alert alert-danger').addClass('alert alert-warning').html("<i class='fa fa-spinner fa-spin'></i> Processing the form");
                        var formData = $('#form2').serialize();
                        submitForm(formData);
                    }
                });
            });

            function submitForm(formData) {
                $.ajax({
                    type: 'POST',
                    url: 'comp/checker.php',
                    data: formData,
                    dataType: 'json',
                    cache: false,
                    timeout:  7000,
                    success: function(data) {

                        $('#form2 #response').removeClass('alert alert-warning').addClass((data.error === true) ? 'alert alert-danger' : 'alert alert-success').html(data.msg);
                    }, 
                    error: function(XMLHttpRequest, textStatus, errorThrown) {
                        $('#form2 #response').html('Something else went wrong :/ ' + errorThrown + textStatus);
                    },
                    complete: function(XMLHttpRequest, status) {
                        $('#form2')[0].reset();         
                    }
                });
            }


        </script>

PHP文件

代码语言:javascript
复制
    <?php
    //header('Content-type: application/json');
    sleep(5);

    //if (!empty($_POST)) {


        $date = date("d/m/Y");
        $fname = trim($_POST['fname']);
        $lname = trim($_POST['lname']);
        $email = trim($_POST['email']);
        $postcode = trim($_POST['postcode']);

        $number1 = $_POST['number1'];
        $number2 = $_POST['number2'];
        $number3 = $_POST['number3'];
        $number4 = $_POST['number4'];
        $number5 = $_POST['number5'];
        $number6 = $_POST['number6'];

        $totalnumber = $number1 . '' . $number2 . '' . $number3 . '' . $number4 . '' . $number5 . '' . $number6;

        $list = array("$date, $fname, $lname, $email, $postcode, $totalnumber");

        $file = fopen("contacts_2.csv","a");

        foreach ($list as $line) {fputcsv($file,explode(',',$line));}

        fclose($file);

        //HEADER TO INDEX.PHP


        $return['error'] = false;
        $return['msg'] = "<p>Thanks for your feedback</p>";
        echo json_encode($return);
        exit();

    //} else {
    //  $return['error'] = true;
    //  $return['msg'] = "<p>Something went wrong, please retry in a few minutes</p>";
    //  echo json_encode($return);
    //  exit();
    //}

    ?>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-22 08:12:39

从服务器接收到的响应不是有效的json。您可能会得到xml格式的响应。这可能是由php页面生成的错误造成的。检查响应是否由php页面生成。还要检查php页面是否有足够的权限在生产服务器上执行。

检查浏览器控制台,查看由php文件生成的响应。

票数 1
EN

Stack Overflow用户

发布于 2017-07-28 20:25:23

我一直在犯这个错误:

“在JSON中位于0位置的意外令牌”

解决方案:

  • 我从javascript (通过ajax和dataType: "json",)向php发送了一个数字。
  • 我没有意识到的是,在到达php之前,这个数字将被转换成一个字符串。
  • 因此,为了在php端使用发送的值来执行查询等,我需要使用intval$gender = intval($_POST["gender"]);将其转换回数字。
票数 0
EN

Stack Overflow用户

发布于 2018-08-05 18:06:15

如果按下这个函数:wp_send_json(),它对我有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39074088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档