语法错误:来自 ajax post 调用的 JSON 输入意外结束



我从我的 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行来使其完美工作。

最新更新