【发布时间】:2017-05-16 17:13:12
【问题描述】:
我确实使用 jQuery 表单插件和 ajaxSubmit。但是说到返回值,我得到了这个(前面有两行空白,但它们在这里被截断了)。
<?xml version="1.0" encoding="UTF-8"?>
<elements>
<success>
<value>282</value>
</success>
</elements>
ajaxSubmit 调用有一个 dataType: "xml" 并且返回的标头是正确的,但是 ajax 会因“Invalid XML”错误而停止。我认为这两个空白行是不正确的,但即使是修剪也不会删除它们。顺便说一句,XML 生成看起来像这样:
$output = new XMLWriter();
$output->openMemory();
$output->setIndent(true);
$output->startDocument('1.0', 'UTF-8');
$output->startElement("elements");
if (isset($theID)) {
$output->startElement("success");
$output->startElement('value');
$output->text($theID);
$output->endElement(); //value
$output->endElement();
}
$output->endElement(); //elements
$output->endDocument();
$xml = $output->outputMemory(true);
header('Content-type: text/xml; charset=utf-8');
print trim($xml);
有人知道这里可能出了什么问题吗?
编辑: 这是 Javascript,但它做得很好(即使有标题,我一开始也没有显示它):
$('#formNewForm').ajaxSubmit({
dataType: 'xml',
beforeSubmit: function () {
// something
},
error: function (jqXHR, textStatus, errorThrown) {
// something
},
success: function (responseXML) {
// something
}
});
【问题讨论】:
-
你可能想发布你的 JS。
-
XML 确实有效。空行应该无关紧要。请发布构建请求并引发异常的 javascript 代码
-
您是否从浏览器的开发人员工具中的“网络”选项卡中提取了生成的 XML?如果不是,可能值得仔细检查它是否真的相同
-
xml返回值来自chrome开发者工具>网络>响应
-
您用来处理返回的 xml 的 javascript 在哪里?