【发布时间】:2017-08-16 08:28:07
【问题描述】:
我必须将数据从 html 表单发布到 api。我有以下代码:
<form name="newAppform">
<input type="text" name="appname" placeholder="App Name" id="appname"><br>
<input type="radio" name="platform" value="iOS"> iOS
<input type="radio" name="platform" value="Android"> Android<br>
<input type="submit" value="submit" name="submit" id="submit"></form>
jQuery 是:
var a = 1; //var x = $('#appname').val();
$('#submit').click(function(){
//alert($('#appname').val());
$.ajax({
type: 'POST',
url: 'https://service.../.../createApp',
contentType: "application/json",
data: JSON.stringify({"account_id" : a, "app_name" : $('#appname').val(), "app_platform" : $("[name='platform']").val()}),
success: function() {
alert("Complete!");
},
error: function(e) {
console.log(e);
alert("Something went wrong.");
}
});
});
我正在使用一个有效的发布网址,我在这里用省略号替换了它。我收到警报'Something went wrong.'。在控制台上记录的错误是
{readyState: 0, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, ...}。
怎么了?请注意,相同的帖子使用相同的代码,如果我没有从表单输入中获取成功消息,我会收到成功消息。相反,表单输入阅读与发布分开工作。如果我取消注释“警报”,它将能够显示我在输入文本字段中输入的值。另请注意,如果我取消注释并将变量 x 用作键“appname”的值,它仍然无法正常工作。同样的错误。但是,如果我在外部将 x 硬编码为 var x = 'abc',我就会成功。
【问题讨论】:
-
你不需要
stringify数据属性 -
“控制台上记录的错误是” ...实际上不是“错误”,而是 jqXHR 对象本身。
-
同时检查您的响应,服务器将返回某种错误。
-
您的
error处理程序逻辑不是很有帮助 - 您能否检查控制台的网络选项卡以查看请求的响应是什么。 -
@CBroe,我知道。我也这么觉得。我觉得这是记录错误的语法,所以这就是我使用的。