【发布时间】:2020-01-06 19:06:36
【问题描述】:
我从我的 ajax post 调用中收到“SyntaxError: Unexpected end of JSON input”,以将数据发送到我的 serverlet 进行处理。一切似乎实际上都在工作 - 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 应该是 contentType。谢谢你,但这并没有改变问题。
EDIT 2更改代码以反映解决方案
【问题讨论】: