Я потратил более 6 часов, чтобы найти исключение или специальный символ, который можно найти в моем коде, но я не мог. Я проверил все похожие сообщения здесь.
Я отправляю форму с большим всплывающим окном. Сначала я использую всплывающее всплывающее окно, чтобы открыть форму, чем я отправляю все входы в main.js для проверки.
Поэтому мне просто нужен третий глаз.
У меня есть: index.html
, register.php
, main.js
Вот код
FORM
JS / AJAX
PHP-register.php
Вот сообщения об ошибках
Выход 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('dmYH: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);
В интересах поисковиков, которые хотят решить подобную проблему, вы можете получить аналогичную ошибку, если ваш ввод пустой строки.
например
var d = ""; var json = JSON.parse(d);
или если вы используете AngularJS
var d = ""; var json = angular.fromJson(d);
В chrome это привело к «Uncaught SyntaxError: Неожиданный конец ввода», но Firebug показал его как «JSON.parse: неожиданный конец данных в строке 1 столбца 1 данных JSON».
Конечно, большинство людей не поймают это, но я не защитил этот метод, и это привело к этой ошибке.
Удалить
dataType: 'json'
заменив его
dataType: 'text'
У меня такая же проблема, и я что-то нашел. Я прокомментировал строку:
dataType: 'json',
после этого это было успешно, но … когда я сделал console.log (data), он вернул основной index.html.
Вот почему у вас есть ошибка «Неожиданный токен <» и он не может разобрать.
Изменение типа данных для текста помогло 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 и что файл существует.
Отправка данных JSON с помощью NodeJS при вызове AJAX:
$.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"); } }); });
Даже если ваш JSON в порядке, это может быть проблема с кодировкой DB (UTF8). Если кодировка / сопоставление вашей базы данных UTF8, но PDO настроен неправильно (charset / обходной путь отсутствует), некоторые из них / è / ò / ì / и т. Д. В вашей БД могут разорвать вашу 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
PS Устаревший, но все же может быть полезен людям, которые застряли с «неожиданным характером».
Может быть, его нерелевантный ответ, но его работа в моем случае … не знаю, что было не так на моем сервере … Я просто включил журнал ошибок на сервере Ubuntu 16.04.
//For PHP error_reporting(E_ALL); ini_set('display_errors', 1);