在ajax上发送数据

时间:2017-01-17 15:25:29

标签: javascript ajax

这是在ajax请求上向服务器发送数据的正确方法吗?

var xhttp = new XMLHttpRequest();
          xhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
              alert(response);
            }
          };
          xhttp.open("GET", "https://myurl/", true);
          xhttp.send(JSON.stringify("{ action: 'search', mode: question}"));

因为我收到此错误405 (Method Not Allowed - Action not found)

1 个答案:

答案 0 :(得分:0)

不,有几个问题:

  1. alert(response);会失败,因为没有response变量;你可能想要alert(xhttp.responseText)

  2. 您正在进行GET,但之后尝试发送POST正文。你不能这样做。 GET信息在URL中,而不是正文中。

  3. 您正在发送JSON(嗯,尝试),但未将其识别为JSON。

  4. 您将字符串传递给JSON.stringify,通常您传递的是对象,而不是字符串,因为它的作用是转换内容 JSON字符串。

  5. 假设您的意思是执行POST,并且您确实想要发送JSON(例如,服务器设置为从客户端接受JSON),那么最小的更改将是:

    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            alert(xhttp.responseText);                                    // 1
        }
    };
    xhttp.open("POST", "https://myurl/", true);                           // 2
    xhttp.setRequestHeader("Content-Type", "application/json");           // 3
    xhttp.send(JSON.stringify({ action: 'search', mode: question}));      // 4
    

    请注意,我假设question是范围内的变量。