为什么ajax发GET请求就成功,POST请求则报错?

(1)首先说明的是请求的URL是一个静态资源,比如一个json文件。
(2)现在现象是发GET请求就成功,POST请求则报错。
(3)最新发现:就算是GET请求,如果把JSON数据的序列化字符串直接作为query string也会导致报错。就是这样:some_url?{%22username%22:%22username%22,%22password%22:%22password%22}
(4)所报错误都是一样的:Failed to load resource: the server responded with a status of 500 (Internal Server Error)
添加修改:
(5)我请求的是一个静态资源,不存在后端逻辑代码,所以是打不了断点的。
(6)有人要问我获取一个静态资源,直接用GET方式,而且也不用传参数啊。实际上我是一个前端开发,这里只是用一个json文件来作为返回值来模拟后端。等到和后端开发人员集成的时候,需要换成实际的URL,那时候就需要传参数了,而且也可能是POST方式。
(7)我现在就是用jQuery的ajax实现的,传递query string就是用的其中的data属性。
如果是:
(a)data: JSON_OBJECT 那么会使用jQuery本身的序列化方式来序列化,就没有问题
但如果是:
(b)data: JSON.stringify(JSON_OBJECT) 直接传递这个序列化后的字符串就会报错
(8)已经和后端开发人员测试过,如果是存在后端逻辑代码,也就是不直接请求一个静态文件。那么所有情况都不会报错。
(9)我用的编辑器是HBuilder,用的是它自带的web服务器。具体的实现代码可以查看我在HBuilder论坛上发的求助帖:ajax只能发起GET请求,而不能发POST请求,否则报500错误
(10)经过测试,发现如果是提交表单的时候,也存在类似的问题:将表单的action指向一个temp.html文件,如果method=post,那么会报500错误;如果method=get,则可以正常转到temp.html文件。
(11)解决的方法当然就是把后端也搞起来。实际上我更想知道为什么会有这种现象。大家经常讨论GET和POST有什么区别,一说就是一大堆,但却没有指出这一点。

$.ajax({
url: "abc.json",
type: "GET" //不报错
//type: "POST" //报错
});

总结:
静态服务器没有实现POST方法

关注者

35

被浏览

为什么ajax发GET请求就成功,POST请求则报错?的更多相关文章

  1. 【前台 ajax】前台ajax请求,地址正确,但是报错不进入后台

    前台ajax请求,地址正确,但是报错不进入后台 出现上述问题,可能的情况是 1.ajax用的post,而后台限定用get,或者所有的post请求都被拦截,所以不能正常进入并且报错403 @Reques ...

  2. 同一台服务器请求easyswoole的一个websocket接口报错

    求助大神啊!file_get_contents报这个错:failed to open stream: Connection timed out换成curl又报这个错:couldn't connect ...

  3. python + requests发起请求,接口返回400,报错“Unexpected character encountered while parsing value: G. Path”

    完整报错信息如下: {'errors': {'': ["Unexpected character encountered while parsing value: G. Path '', l ...

  4. 使用main方法调用http请求本地服务器的某个servlet报错问题

    java.io.IOException: Server returned HTTP response code: 500 for URL: http://localhost:8081/test/myS ...

  5. react之异步请求数据,render先行渲染报错,未拿到数据

    import React from 'react' import {connect} from 'react-redux' import { Redirect} from 'react-router- ...

  6. Restful风格,PUT修改功能请求,表单中存在文件报错-HTTP Status 405 - Request method 'POST' not supported

    解决方案配置如下 <!-- 配置文件上传解析器 --> <bean id="multipartResolver" class="org.springfr ...

  7. patch 请求时,关于id的报错问题

    在更新操作时,先显示要更新的数据内容,再修改 在发送patch请求时出现 After applying the update to the document {_id: ObjectId('55be3 ...

  8. 使用layer的弹窗时,出现layer引入成功,触发成功,控制台无报错,但是页面无变化或者仅出现遮罩层的问题的解决思路

    ------------------------------------------20180410补充------------------------------------------------ ...

  9. RabbitMq安装成功后执行命令报错(Error: unable to connect to node 'rabbit@DESKTOP-LPKSION': nodedown)

    我们直接来看解决方案吧.首先打开服务,找到RabbitMq服务. 双击打开后选择登陆选项卡: 点选此账户,输入你计算机的登录名称.点击浏览: 在这里输入你的用户名,点检索: 这里的密码输入你电脑开机登 ...

  10. JMeter接口HTTP请求implementation不选java会报错解决方法

    1.若不对c参数和d参数进行URL编码则需要选择implementation为java: 2.若想不设implementation值,则需进行c参数d参数URLEncoding import java ...

随机推荐

  1. 搭建基于hyperledger fabric的联盟社区(三) --生成公私钥证书及配置文件

    一.生成公私钥和证书 Fabric中有两种类型的公私钥和证书,一种是给节点之前通讯安全而准备的TLS证书,另一种是用户登录和权限控制的用户证书.这些证书本来应该是由CA来颁发,但是目前只有两个社区,所 ...

  2. oracle版本及字符集查询

    查询oracle版本:select * from v$version; 查询oracle字符集:select * from nls_database_parameters;

  3. Java的八种基本数据类型及其包装类

    Java有八种基本数据类型,所谓基本类型就是说存储时仅存在栈中,那么与之相对就是引用类型,引用类型既存在栈里又存在堆里,栈内存放堆内地址. 八种基本类型分别为byte short int long f ...

  4. CentOS7 php7 安装 curl 扩展

    直接从php源码包中,使用root权限安装. 找到原先安装PHP的源码包文件(如果已经删掉需要重新下载原来版本的源码包并解压) 我的php源码包在root家目录下. cd /php-7.1.4/ext ...

  5. JS-用法

    JavaScript 用法 HTML 中的脚本必须位于 <script> 与 </script> 标签之间. 脚本可被放置在 HTML 页面的 <body> 和 & ...

  6. oracle startup mount nomount 区别

    看oracle入门书,其中一句话说,使用startup nomount 命令启动例程,不可以和mount open 和exclusive一起使用,这个命令适用于建立数据库或是维护数据库时使用. 于是查 ...

  7. 继承String?

    不能继承,因为 public final class String extends Objectimplements Serializable, Comparable<String>, C ...

  8. [转] C#2010 在TreeView控件下显示路径下所有文件和文件夹

    原文 张丹-小桥流水,C#2010 在TreeView控件下显示路径下所有文件和文件夹 C#2010学习过程中有所收获,便总结下来,希望能给和我一样在学习遇到困难的同学提供参考. 本文主要介绍两个自定 ...

  9. halcon-车牌识别

    halcon代码: 1: read_image(Image,'D:/MyFile/halcon/车牌识别/图片.jpg') 2: decompose3(Image,ImageR,ImageG,Imag ...

  10. leetcode462

    public class Solution { public int MinMoves2(int[] nums) { var list = nums.OrderBy(x => x).ToList ...