我正在创建一个计费表单来将数据发送到jsonrpc endpoints . 虽然服务器返回状态码200;我收到此回复{message:“解析错误 . 服务器收到无效的JSON . ”,代码:-32700,..}
$(document).on("submit", "#billing", function(event)
{
event.preventDefault();
$.ajax({
url: $(this).attr("action"),
type: $(this).attr("method"),
dataType: "JSON",
data: {new FormData(this)},
processData: false,
contentType: false,
success: function (data, status)
{
console.log('Submission was successful.');
console.log(data);
},
error: function (xhr, desc, err)
{
console.log('An error occurred.');
console.log(data);
}
});
});
<form name="billing" id="billing" action="https://XX.XX.XX.XX/ghe/api2/call/jsonrpc2" method="POST">
First Name: <input type="text" id="firstname" name="firstname"/>
Surname: <input type="text" id="surname" name="surname" />
Email : <input type="text" id="email" name="email"/>
<input type="submit" name="submit" value="submit">
</form>
我看到某处使用stringify并尝试通过:
$("#submit").click(function()
{
$("#billing").submit(function(e)
{
var postData = $(this).stringify();
var formURL = $(this).attr("action");
$.ajax(
{
url: $form.attr('action'),
type: "POST",
data : postData,
success:function(data, textStatus, jqXHR)
{
console.log("success");
},
error: function(jqXHR, textStatus, errorThrown)
{
console.log("Failed");
}
});
});
$("#billing").submit(); //SUBMIT FORM
});
但我仍然得到相同的错误响应 . 我究竟做错了什么?使用API的新手让我知道现在有点分散;如果可以指向最适合API的资源学习网页,我将不胜感激 .
谢谢
1 回答
您需要捕获发送到服务器的有效负载,以查看导致无效Json-Rpc异常的原因 .
你可以
console.log(postData)
. 或者我建议你的浏览器调试器或fiddler .一旦你捕获了发送到服务器的json,你就可以将它放在json linter jsonLint.com中,看看是什么导致了你的麻烦 .