2017-08-28 208 views
0

我有一个用户填写的表单,它有他们的名字,姓氏,电子邮件和毕业年份。我使用jQuery将它发送到名为form.php的PHP表单,该表单执行某些操作,然后将字符串success返回到前端。这是以前的工作,但我只是增加了一对夫妇更行,而现在它提供了520,当我发送POST请求到它:POST到PHP脚本执行,但给出了错误520

Failed to load resource: the server responded with a status of 520 (HTTP/2.0 520) 

然而,一切在脚本执行,因为它应该和没有(已知的)语法错误。该文件是在github,可以在这里找到:https://github.com/LAHSHackClub/lahs.club/blob/master/form.php

当希望通过我的PHP的日志,它成功地调用请求form.php

[Mon Aug 28 05:31:21 2017] 127.0.0.1:33480 [200]: /form.php 

(它是绿色的命令行,意味着它执行)

除了它没有发送成功消息之外,这并不是真正的游戏突破。我可以做出解决方法,但我觉得我应该得到解决。任何帮助表示赞赏!

谢谢!

+0

尝试使用除form.php以外的其他名称。也许它会帮助 – user3808887

+0

'这在以前工作,但我只是增加了几行......' - 你添加了什么?您是否试图查看https://support.cloudflare.com/hc/en-us/articles/200171936-Error-520-Web-server-is-returning-an-unknown-error和https:// support.cloudflare.com/hc/en-us/articles/222971907-Using-CURL-When-Troubleshooting-with-Cloudflare页面? – Neodan

+0

@ user3808887但是它在...之前工作,那与它无关。 @Neodan它更像'exec()',我不认为它会改变任何事情。是的,我看到了那篇文章。 –

回答

0

由于JesseTheSkrub的帮助下,我定了!从本质上讲,最后exec是:

exec('service apache2 reload'); 

这基本上切断在该文件的中间服务器的连接,从而给人一种520为了解决这个问题,PHP有一个方便的功能:ignore_user_abort(true);,我在第一行上修复。谢谢杰西!

0

520错误本质上是一个“全部捕获”的响应,当原始服务器返回某些意外事件或某些不被容忍/解释(协议违反或空响应)时。

对于你的情况,它很可能是一个服务器超时或服务器form.php响应null或没有回应你得到。

从原产

+0

1.服务器超时:即使完全执行,php脚本是否可以超时? 2.响应null:我查看了所有的情况,它不能为空。检查我的github回购。 3.空洞的回应:再次,不可能。会是什么呢? –

0
problem with the request/url, you may not get json back. 
I get it now.. 
Problem in your form.js you set JSON request in $.post 

``` $_POST['first_name'] is for the form-xxx data ``` 
Thats u get NULL response 

空响应您需要创建形式和尝试的部份SYNTEXT AJEX中

var data =$('#formid').serialize(); 

send 'data' to form.php in AJEX 
+0

这不起作用,也没有任何意义。 –

+0

$ _POST ['first_name'] this not get json data u pass json so so not get value okky if you not believe use POSTMAN for check request –

+0

'$ _POST ['first_name']'不是问题,因为它在工作之前,我传递一个输入值,这是一个STRING。这也不应该给出错误520。 –