我从我的 ajax post 调用中收到"语法错误:JSON 输入的意外结束",将数据发送到我的服务器进行处理。一切似乎都在工作 - ajax 将数据发送到 servlet,而 servlet 正确地接收数据。我不明白为什么解析器会抛出错误。
我已经研究并尝试了StackOverFlow上的许多其他解决方案,但没有成功。
任何帮助或指示感谢!
干杯。。。史蒂夫
我的浏览器代码是:
function createDataset(){
var jsonObj = new Object();
jsonObj.display_drivername = document.getElementById('driver_namedb').value;
jsonObj.drive_seq1 = document.getElementById('drive_seq1').value;
return jsonObj;
}
function submit_claim() {
//Main code call
var JsonDataset = createDataset();
console.log(JsonDataset);
request = $.ajax({
url: '../wp-content/themes/u-design-child/deleteme.php',
type: 'POST',
// Fix - delete this line contentType:'application/json; charset=utf-8',
// Fix - delete this line dataType: 'JSON',
data: JsonDataset
});
}
和服务器端测试代码在 deleteme.php:
//elog writes to error.log file
if(!empty($_POST['display_drivername'])) {elog ('Drivername found'.$_POST['display_drivername']);};
if(empty($_POST['display_drivername'])) {elog ('driver name empty');};
if(!empty($_POST['drive_seq1'])) {elog ('DSN found'.$_POST['drive_seq1']);};
if(empty($_POST['drive_seq1'])) {elog ('DSN empty');};
我得到的结果是:
来自 Submit_Claim (JsonDataset( 的控制台日志输出(在 Chrome 控制台中展开(:
{display_drivername: "Steve Parry [SPAR]", drive_seq1: "2438"}
display_drivername: "Steve Parry [SPAR]"
drive_seq1: "2438"
__proto__: Object
来自 DeleteMe.php 网络标头的表单数据:
display_drivername: Steve Parry [SPAR]
drive_seq1: 2438
错误日志(来自 Deleteme.php(:
[06-Jan-2020 18:49:44 UTC] string(34) "Drivername foundSteve Parry [SPAR]"
[06-Jan-2020 18:49:44 UTC] string(13) "DSN found2438"
编辑1:看到某人的评论现在已经消失,指出内容类型应该是contentType。谢谢你是谁,但这并没有改变问题。
编辑 2更改代码以反映解决方案
我最终通过完全删除contentType和dataType行来使其完美工作。