Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以在不使用XMLHttpRequest提交表单的情况下附加FormData?_Javascript_Php_Ajax_Xmlhttprequest_Progressive Enhancement - Fatal编程技术网

Javascript 是否可以在不使用XMLHttpRequest提交表单的情况下附加FormData?

Javascript 是否可以在不使用XMLHttpRequest提交表单的情况下附加FormData?,javascript,php,ajax,xmlhttprequest,progressive-enhancement,Javascript,Php,Ajax,Xmlhttprequest,Progressive Enhancement,如果可能的话,我正在尝试逐步增强一个没有jquery和最少javascript的php项目。有一个带有html表单的上传页面和一个图像文件上传页面。还有一个用于远程图像URL的输入。如果用户在输入中放入一个图像url,我将使用js创建一个blob并将其附加到表单中。当使用javascript处理表单请求和响应时,这一点很好。但是我想在不需要使用XMLHttpRequest的情况下将blob附加到表单中,以便php能够处理重定向。我不想让javascript处理重定向,因为我需要确定是否启用了ja

如果可能的话,我正在尝试逐步增强一个没有jquery和最少javascript的php项目。有一个带有html表单的上传页面和一个图像文件上传页面。还有一个用于远程图像URL的输入。如果用户在输入中放入一个图像url,我将使用js创建一个blob并将其附加到表单中。当使用javascript处理表单请求和响应时,这一点很好。但是我想在不需要使用XMLHttpRequest的情况下将blob附加到表单中,以便php能够处理重定向。我不想让javascript处理重定向,因为我需要确定是否启用了javascript,我只是想增强表单,而不是使后端逻辑复杂化

我在后端使用curl实现相同的功能,但如果javascript可用,我希望在客户端使用curl

我复习过了

我已经尝试使请求同步而不是异步,以查看是否可以使php重定向工作,但这是不推荐的

  • 到目前为止,我的研究表明,如果不使用XMLHttpRequest提交表单,就无法在表单中添加任何内容

  • 使用XMLHttpRequest似乎需要javascript处理重定向 这使我在php中处理响应的方式变得复杂


如果我理解正确,您是在解释现场客户端,如果成功,结果是图像?如果是这样的话,您应该能够在表单上创建一个新的输入,可能是文本类型,然后对图像内容进行base64编码,除非我误解了什么?一个文件代表用户计算机上的一些东西,其他的都是二进制数据(即使是文本,但base64可以绕过编码问题)。好吧,这听起来很有希望。表单有一个远程URL的输入,因此客户端可以先绕过将图像保存到计算机。那么你说使用js创建一个新的表单元素并将值设置为base64值?有没有一种简单的方法可以对blob或url进行base64编码?不确定如何在php中处理。我不确定如何在php中处理这一点的意思是,文件上载函数需要一个blob。明确地说,您的目标是让传统的web表单生成标准的HTTP POST,而不是XHR?JS部分只是下载客户端数据,可能是在保存之前预览图像?如果是的话。服务器端,您将没有文件,只发布您必须解码的数据。Base64还将有效负载大小增加33%。老实说,我尊重您所做的,但我会在传统模式下发布,XHR为其他所有人提供FormData(无论如何,这将是99.999%)。在服务器端,您可能需要抽象一点您的逻辑,但通常这两条路径都应该共享大部分逻辑。服务器仍然可以发送重定向,您只需在JS中通过window.location更改来实现重定向