我有一个非常简单的PHP表单,它将XML数据发布到URL,然后URL响应更多的XML。这是:
form action="[...]" method="POST">
<textarea name="xml" rows="30" cols="100">
<RRequest version = '2.13'>
<Request>
<Command>update</Command>
<Pd>
<RID>1</RID>
<ExtID>111111111</ExtID>
</Pd>
</Request>
</RRequest>
</textarea>
<br>
<input value="Submit Request" type="submit">
</form>
这很好用。我试图实现相同的东西,但使用jQuery。这是代码:
<script>
$(document).ready(function() {
$("#submit").click(function(){
var xml_data = $("#xml").val();
$.ajax({
type: "POST",
url: "[...]",
data: xml_data,
contentType: "text/xml",
dataType: "text",
cache: false,
success: function(data){
$("#xml").val("");
$("#xml").val(data);
},
error: function(xhr, textStatus, errorThrown){
alert("it no works");
}
});
});
});
</script>
</head>
<body>
<textarea id="xml" rows="30" cols="100">
<RRequest version = '2.13'>
<Request>
<Command>update</Command>
<Pd>
<RID>1</RID>
<ExtID>111111111</ExtID>
</Pd>
</Request>
</RRequest>
</textarea>
<br>
<input type="button" id="submit" />
然而,这不起作用。它确实与服务器联系,但服务器返回错误的请求消息,这使我认为发送的数据不正确。包含XML的两个textareas是相同的。任何帮助将不胜感激。
我正在使用jQuery 2.1.3。
答案 0 :(得分:1)
替换此行
var xml_data = $("#xml").val();
与
var xml_data = {xml: $("#xml").val() };
UPD: 应从.ajax()请求中删除这些参数:
contentType: "text/xml",
dataType: "text",