我正在尝试使用POST方法向服务器发送包含名称的变量。这应该是异步的。我编写了以下代码,但是我收到了一个错误, SyntaxError:JSON.parse:JSON数据第1行第1列意外的数据结尾,老实说,它并没有太大帮助。
我下载了firebug并且firebug让我更接近了,因为它说错误在第84行第17行(我不知道该如何制作列,所以我计算了17个字符)。如果是这种情况,那么它说我的问题是从单词parse开始。
我是AJAX的新手所以我不确定你们做了什么并且不需要看,但我会先从我认为问题所在的位置展示这段代码。
function sendByPost()
{
var name = getName();
var req = new XMLHttpRequest();
req.open("POST", "http://httpbin.org/post", true);
req.setRequestHeader('Content-Type', 'application/json');
req.send('{"Tom"}');
console.log(JSON.parse(req.responseText));
}
function getName()
{
return document.getElementById("myName").value;
}
我也不希望它在第7行说汤姆,我的目的是说出用户键入的内容。所以我设置了一个名称变量,它将获得文本框内的值。
执行以下操作并不起作用:
req.send('{name}');
答案 0 :(得分:2)
基本上,您需要在请求中发送一个对象。
我做了一个简单的演示:
function sendByPost() {
var name = getName(); // Get the value from the input field.
var req = new XMLHttpRequest();
var data = {}; // Declare an object.
data.name = name; // The data object has the name attribute with the value.
req.open("POST", "http://httpbin.org/post", true);
req.setRequestHeader('Content-Type', 'application/json');
req.send(JSON.stringify(data)); // Send the data object as json string.
req.onreadystatechange = function() {
if (this.readyState === 4 && this.status === 200) { // Check for the status of the response
console.log(JSON.parse(req.responseText)); // Prints the results.
}
};
}
function getName() {
return document.getElementById("name").value;
}
sendByPost();

<input type="text" id="name" value="Test" />
&#13;