Javascript 在GAE Python中使用XMLHttpRequest()PUT

Javascript 在GAE Python中使用XMLHttpRequest()PUT,javascript,python,google-app-engine,xmlhttprequest,put,Javascript,Python,Google App Engine,Xmlhttprequest,Put,我目前正试图编写一些Javascript来与我使用XMXMLHttpRequest()在GAE(使用Python)上部署的API交互。我得到一个GET没有问题,但是PUT给了我很多麻烦 有趣的是,我在处理来自测试HTTP站点()的PUT请求时没有任何问题,但是每次尝试使用自己的Javascript代码时,我都会收到一个状态值0。下面是我的GAE和Javascript代码片段 (注意-我必须为此通话使用“put”作为要求。) 任何指导都将不胜感激 GAE(服务器): 以及我的网页中的Javascr

我目前正试图编写一些Javascript来与我使用XMXMLHttpRequest()在GAE(使用Python)上部署的API交互。我得到一个GET没有问题,但是PUT给了我很多麻烦

有趣的是,我在处理来自测试HTTP站点()的PUT请求时没有任何问题,但是每次尝试使用自己的Javascript代码时,我都会收到一个状态值0。下面是我的GAE和Javascript代码片段

(注意-我必须为此通话使用“put”作为要求。)

任何指导都将不胜感激

GAE(服务器):

以及我的网页中的Javascript:

      <script>
        window.onload = function()
        {
            var myRequest = new XMLHttpRequest();
            var url = 'http://cs496-assignment3-mastrokn.appspot.com/updatecard';
            var param = 'key=5636318331666432';
            myRequest.open('put', url);


            myRequest.onreadystatechange = function()
            {
                if ((myRequest.readyState == 4) && (myRequest.status == 200))
                {
                    // var myArr = JSON.parse(myRequst.responseText);
                    // myFunction(myArr);
                    document.getElementById("viewCards").innerHTML = myRequest.status;

                }
                else
                {
                    document.getElementById("viewCards").innerHTML = myRequest.status;
                }
            }

            myRequest.send(param); 
        }
    </script>

window.onload=函数()
{
var myRequest=new XMLHttpRequest();
var url='1〕http://cs496-assignment3-mastrokn.appspot.com/updatecard';
var param='key=56363183166432';
myRequest.open('put',url);
myRequest.onreadystatechange=函数()
{
if((myRequest.readyState==4)和&(myRequest.status==200))
{
//var myArr=JSON.parse(myRequst.responseText);
//myFunction(myArr);
document.getElementById(“viewCards”).innerHTML=myRequest.status;
}
其他的
{
document.getElementById(“viewCards”).innerHTML=myRequest.status;
}
}
myRequest.send(param);
}

首先,您的
onreadystatechange()
处理程序应该如下所示:

  myRequest.onreadystatechange = function()
  {
    if (myRequest.readyState == 4) //Don't do anything until the readyState==4
    {
      if(myRequest.status == 200)  //Check for status==200
      {
          document.getElementById("viewCards").innerHTML = myRequest.status;
      }
      else //All other status codes
      {
          document.getElementById("viewCards").innerHTML = 
            'readyState=' 
            + myRequest.readyState 
            + ' status='  
            + myRequest.status
            + ' status text='
            + myRequest.statusText;
      }
    }
  }
然后,从:

如果最终得到一个状态为0且 statusText=null,表示不允许发送请求 表演。它没有发出

要查看出现了什么问题,请检查浏览器中的
javascript控制台
,查看是否有错误,例如:

[错误]无法加载XMLHttpRequest . 起源 访问控制允许原点不允许。 (4.htm,第0行)

当我运行上面的代码并将XMLHttpRequest发送到我自己的本地服务器时,PUT请求成功,状态代码为200

最后,我对您发布的服务器代码表示怀疑,因为我不知道有哪个框架可以从请求处理程序中不返回任何代码,而是返回一些字符串或响应对象。然而,使用其他方法向url发出PUT请求会返回200状态码。这真的是你的服务器代码吗?您使用的是什么框架

  myRequest.onreadystatechange = function()
  {
    if (myRequest.readyState == 4) //Don't do anything until the readyState==4
    {
      if(myRequest.status == 200)  //Check for status==200
      {
          document.getElementById("viewCards").innerHTML = myRequest.status;
      }
      else //All other status codes
      {
          document.getElementById("viewCards").innerHTML = 
            'readyState=' 
            + myRequest.readyState 
            + ' status='  
            + myRequest.status
            + ' status text='
            + myRequest.statusText;
      }
    }
  }