通过AJAX POST发送变量

时间:2015-11-04 21:06:37

标签: json ajax

我正在尝试使用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}');

1 个答案:

答案 0 :(得分:2)

基本上,您需要在请求中发送一个对象。

enter image description here

我做了一个简单的演示:



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;
&#13;
&#13;