【问题标题】:XMLHttpRequest() post does not appear as file on serverXMLHttpRequest() 帖子未在服务器上显示为文件
【发布时间】:2015-02-19 05:29:31
【问题描述】:

就我有限的理解而言,这个函数应该在服务器上创建一个文件,其中包含函数 NewFileToSave() 返回的文本字符串:

function SaveDay()
{
 var toSend = NewFileToSave();
 var xhr = new XMLHttpRequest();
 xhr.open('POST', 'postTest.dat', true);
 xhr.onload = 
  function(e) 
  {
    if (this.status == 200) 
    {
        alert("Sent");
    }
  };
 xhr.send(toSend);
 alert(toSend);
}

当它运行时(在 Chrome 中,没有来自 Chrome 的 Javascript 控制台的投诉),最终警报按预期向我提供了我的文本字符串,然后 onload 函数中的警报告诉我它已按预期发送。但是我没有在包含脚本的 HTML 页面加载到 Chrome 的 URL 的文件夹中找到名为 postTest.dat 的服务器文件(或文件搜索可以判断的服务器上的任何其他位置)。

谁能告诉我我有多傻?

【问题讨论】:

    标签: javascript function xmlhttprequest


    【解决方案1】:

    无论NewFileToSave() 的返回值是作为请求的主体,它都会向服务器发出 POST 请求。 (由于该文件尚不存在,您可能会收到404 Not Found 响应)。

    如果您想在服务器上创建一个文件,那么您需要服务器运行一个程序来读取该数据并使用它来创建一个文件(并且您可能希望使用 PUT 请求而不是 POST请求,指定Content-Type 请求头,并向系统添加某种身份验证/授权层)。

    具体操作方式取决于您使用的 HTTP 服务器以及您的编程语言偏好。

    对任意 HTTP 服务器的任意 POST 请求不会创建任意文件。那将是一个巨大的安全漏洞。

    【讨论】:

    • 谢谢!我明白。所以 open 函数的第二个参数中的(相对)URL 是响应帖子返回的文件(在返回一些输出之前也可能在服务器上做一些混乱)?这方面的文档(例如w3schools.com/ajax/tryit.asp?filename=tryajax_post)错过了人们真正需要看到的一件事:它所引用的文件 demo_post.asp。我意识到这将依赖于服务器,但是那里的示例仍然会有所帮助...
    • "是响应帖子返回的文件" — 它是发出请求的 URL。服务器可能会将 URL 映射到文件系统并使用它来归档具有匹配名称的文件,但可能不会。
    • “错过了真正需要看到的一件事:它所引用的文件 demo_post.asp” — 您可能应该将学习基本服务器端编程作为学习如何使用 Ajax 的先决条件,而不是而不是并行学习的东西。
    • 那么您将在学习 Ajax 的过程中学习 Classic ASP(这是本世纪第一个服务器端编程语言的糟糕选择),而不是作为先决条件。
    • 很公平。 (我或许应该说,我已经从头开始用 C++ 为 ARM 微控制器编写了一个完整的 - 并且令我惊讶的工作和强大的 Web 服务器。虽然它没有做任何 asp-isms,也没有处理任何帖子,因为它不需要为它打算用于的受限应用程序。)也许我应该重新阅读一些关于这类事情的文档,我不得不说我没有发现所有有用的东西,因为它似乎假设知识水平略高于开始时的知识水平。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    相关资源
    最近更新 更多