Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.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
Javascript SyntaxError:JSON.parse:JSON数据的第1行第1列出现意外字符_Javascript_Php_Jquery_Ajax_Json - Fatal编程技术网

Javascript SyntaxError:JSON.parse:JSON数据的第1行第1列出现意外字符

Javascript SyntaxError:JSON.parse:JSON数据的第1行第1列出现意外字符,javascript,php,jquery,ajax,json,Javascript,Php,Jquery,Ajax,Json,我花了6个多小时在代码中查找异常或特殊字符,但我找不到。我检查了这里所有类似的信息 我正在发送带有放大弹出窗口的表单。首先,我使用内联弹出窗口打开表单,然后将所有输入发送到main.js进行验证 所以,我只需要第三只眼睛 我有:index.html,register.php,main.js 这是代码 下面是错误消息 JSON输出 Chrome控制台: Firefox控制台: 我遗漏了什么?事实上,这个字符是一个

我花了6个多小时在代码中查找异常或特殊字符,但我找不到。我检查了这里所有类似的信息

我正在发送带有放大弹出窗口的表单。首先,我使用内联弹出窗口打开表单,然后将所有输入发送到main.js进行验证

所以,我只需要第三只眼睛

我有:
index.html
register.php
main.js

这是代码

下面是错误消息

JSON输出

Chrome控制台:

Firefox控制台:



我遗漏了什么?

事实上,这个字符是一个<让我觉得你有PHP错误,你有没有尝试回显所有错误

由于我没有你的数据库,我正在检查你的代码,试图找到错误,到目前为止,我已经更新了你的JS文件

$("#register-form").submit(function (event) {

    var entrance = $(this).find('input[name="IsValid"]').val();
    var password = $(this).find('input[name="objPassword"]').val();
    var namesurname = $(this).find('input[name="objNameSurname"]').val();
    var email = $(this).find('input[name="objEmail"]').val();
    var gsm = $(this).find('input[name="objGsm"]').val();
    var adres = $(this).find('input[name="objAddress"]').val();
    var termsOk = $(this).find('input[name="objAcceptTerms"]').val();

    var formURL = $(this).attr("action");


    if (request) {
        request.abort(); // cancel if any process on pending
    }

    var postData = {
        "objAskGrant": entrance,
        "objPass": password,
        "objNameSurname": namesurname,
        "objEmail": email,
        "objGsm": parseInt(gsm),
        "objAdres": adres,
        "objTerms": termsOk
    };

    $.post(formURL,postData,function(data,status){
        console.log("Data: " + data + "\nStatus: " + status);
    });

    event.preventDefault();
});
PHP编辑:

 if (isset($_POST)) {

    $fValid = clear($_POST['objAskGrant']);
    $fTerms = clear($_POST['objTerms']);

    if ($fValid) {
        $fPass = clear($_POST['objPass']);
        $fNameSurname = clear($_POST['objNameSurname']);
        $fMail = clear($_POST['objEmail']);
        $fGsm = clear(int($_POST['objGsm']));
        $fAddress = clear($_POST['objAdres']);
        $UserIpAddress = "hidden";
        $UserCityLocation = "hidden";
        $UserCountry = "hidden";

        $DateTime = new DateTime();
        $result = $date->format('d-m-Y-H:i:s');
        $krr = explode('-', $result);
        $resultDateTime = implode("", $krr);

        $data = array('error' => 'Yükleme Sırasında Hata Oluştu');

        $kayit = "INSERT INTO tbl_Records(UserNameSurname, UserMail, UserGsm, UserAddress, DateAdded, UserIp, UserCityLocation, UserCountry, IsChecked, GivenPasscode) VALUES ('$fNameSurname', '$fMail', '$fGsm', '$fAddress', '$resultDateTime', '$UserIpAddress', '$UserCityLocation', '$UserCountry', '$fTerms', '$fPass')";
        $retval = mysql_query( $kayit, $conn ); // Update with you connection details
            if ($retval) {
                $data = array('success' => 'Register Completed', 'postData' => $_POST);
            }

        } // valid ends
    }echo json_encode($data);

我有完全相同的问题,我发现了一些东西。 我已经评论了这句话:

数据类型:“json”

在那之后它是成功的,但是。。。当我执行console.log(数据)时,它返回main index.html


这就是为什么您有“意外标记。为了帮助搜索者解决类似的问题,如果您的输入是空字符串,您可能会得到类似的错误

e、 g

或者如果您使用的是AngularJS

var d = "";
var json = angular.fromJson(d);
在chrome中,它导致“未捕获的语法错误:输入的意外结束”,但Firebug将其显示为“JSON.parse:JSON数据第1行第1列的意外结束”

当然,大多数人不会因此而被发现,但我没有保护该方法,因此导致了此错误。

删除

 dataType: 'json'
将其替换为

 dataType: 'text'

将数据类型更改为文本帮助 数据类型:“文本”

我已经检查过JSONlint,我的json格式是正确的。但是当我设置
dataType:'json'

JSON Data: {"eventinvite":1,"groupcount":8,"totalMessagesUnread":0,"unreadmessages":{"378":0,"379":0,"380":0,"385":0,"390":0,"393":0,"413":0,"418":0}} 

你确定你没有在
url
字段中使用错误的路径吗?-我遇到了相同的错误,在检查路径后,发现路径错误并用正确的路径替换后,问题得到了解决


确保您指定的URL对于AJAX请求是正确的,并且该文件存在。

在AJAX调用中使用NodeJSON发送JSON数据:

$.ajax({
    url: '/listClientsNames',
    type: 'POST',
    dataType: 'json',
    data: JSON.stringify({foo:'bar'})
}).done(function(response){
    console.log("response :: "+response[0].nom);
});
请注意删除空白

app.post("/listClientsNames", function(req,res){

        var querySQL = "SELECT id, nom FROM clients";   
        var data = new Array();

        var execQuery = connection.query(querySQL, function(err, rows, fields){

            if(!err){
                for(var i=0; i<25; i++){
                    data.push({"nom":rows[i].nom});         
                }
                res.contentType('application/json');
                res.json(data); 
            }else{  
                console.log("[SQL005] - Une erreur est survenue");
            }

        });

});
app.post(“/listClientsNames”,函数(req,res){
var querySQL=“从客户端选择id、名称”;
var data=新数组();
var execQuery=connection.query(querySQL,函数(err,行,字段){
如果(!err){

对于(var i=0;i即使您的JSON正常,也可能是DB字符集(UTF8)问题。如果您的DB的字符集/排序规则为UTF8,但PDO设置不正确(缺少字符集/解决方法),则DB中的某些字符集/ò/ì/等可能会破坏JSON编码(仍然编码,但会导致解析问题)。请检查您的连接字符串,该字符串应类似于以下字符串之一:

$pdo = new PDO('mysql:host=hostname;dbname=DBname;**charset=utf8**','username','password'); // PHP >= 5.3.6

$pdo = new PDO('mysql:host=hostname;dbname=DBname','username','password',**array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")**); // older versions

p.S.已经过时,但对于那些被“意外字符”困扰的人来说仍然是有帮助的。

可能是它不相关的答案,但它在我的情况下工作……不知道我的服务器上出了什么问题……我只是在Ubuntu 16.04服务器上启用了错误日志

//For PHP
error_reporting(E_ALL);
ini_set('display_errors', 1);

当结果是成功的,但您得到“时,在某些情况下,数据未编码为JSON格式,因此您需要首先对其进行编码,例如

 json_encode($data);
稍后,您将在JS中使用json解析,如

JSON.parse(data);

我在从json文件获取数据时遇到了相同的错误

所以,我检查了json文件的路径,它不正确

const search = document.getElementById("search");
const matchList = document.getElementById("match-list");

//search json data and filter
const searchStates = async searchText => {
    const res = await fetch('../state.json');
    const states = await res.json();
    console.log(states);
}

search.addEventListener('input', () => searchStates(search.value));
所以我改变了文件的路径

const res = await fetch('./state.json');
&结果它返回了数组。
因此,请检查您的路径并尝试更改它。在我的情况下,它将起作用。我希望这是可行的。

尝试使用MYSQLI\u ASSOC而不是MYSQL\u ASSOC…通常问题是通过更改它来解决的

祝你好运!

JSON.parse()无法将该数据识别为字符串。例如
{objAskGrant:“Yes”,objPass:“asdfasdf”,objnameName:“asdfasdf adfasdf”,objEmail:“asdfaf@asdfaf.com,objGsm:3241234123,objAdres:“asdfasdf”,objTerms:“CheckIsValid”}

这是这样的:
JSON.parse({objAskGrant:“Yes”,objPass:“asdfasdf”,objnameName:“asdfasdf adfasdf”,objEmail:“asdfaf@asdfaf.com,objGsm:3241234123,objAdres:“asdfasdf”,objTerms:“CheckIsValid”});
将在第行上输出语法错误:缺少“'”而不是“{”

所以正确地包装所有数据如下:
“{”objAskGrant:“Yes”,“objPass:“asdfasdf”,“objnameName:“asdfasdf adfasdf”,“objEmail:”asdfaf@asdfaf.com“,“objGsm”:3241234123,“objAdres”:“asdfasdf”,“objTerms”:“CheckIsValid”}”
这对我来说非常有效


而不是这样:
“{”objAskGrant:“Yes”,“objPass:“asdfasdf”,“objnameName:“asdfasdf adfasdf”,“objEmail:”asdfaf@asdfaf.com,“objGsm”:3241234123,“objAdres”:“asdfasdf”,“objTerms”:“CheckIsValid”}
它给出了您当前遇到的错误。

它真的在开始时有
对象吗?@DanielA.White在js页面中?请您给出一点提示?为什么不使用
$(this).serialize()
发布你的数据?@Teemu这就是我来问你的原因。我是个新手。你能给我举个小例子吗。我不想让你写完整的代码。哈哈哈,别对我大喊大叫,我只是一个28岁的小男孩!快30岁了!:)现在它变成了:JSON.stringify(postData)…所以我的输出变成了
“{”objAskGrant:“是的”,“objPass”:“asdfasdf”、“objnameName”:“asdfasdf adfasdf”、“objEmail”:asdfaf@asdfaf.com“,“objGsm”:3241234123,“objAdres”:“asdfasdf”,“objTerms”:“CheckIsValid”}”
…现在我遇到了TypeError:数据为空(需要再来一杯啤酒!谢谢你的帮助!)让我检查一下。这是我的数据库:你在这里更改了什么?就像旧的一样。我也尝试了不起作用。html标记位于第二行-如果它与ope不在同一行,这可能会导致问题
"SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data"
const search = document.getElementById("search");
const matchList = document.getElementById("match-list");

//search json data and filter
const searchStates = async searchText => {
    const res = await fetch('../state.json');
    const states = await res.json();
    console.log(states);
}

search.addEventListener('input', () => searchStates(search.value));
const res = await fetch('./state.json');