我使用jQuery Form Plugin和ajaxSubmit。但是当谈到返回值时,我得到了这个(前面有两个空行,但是它们在这里被截断了)。
<?xml version="1.0" encoding="UTF-8"?>
<elements>
<success>
<value>282</value>
</success>
</elements>
ajaxSubmit调用有一个dataType:“xml”,返回的标题是正确的,但ajax停止时出现“Invalid XML”错误。我认为这两个空白行是不正确的,但即使修剪也不会删除它们。 XML生成看起来像这样:btw:
$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
}
});
答案 0 :(得分:0)
我在评论中撒谎,我对你的javascript做了更新。这是我的工作代码:
<form id="formNewForm" action="ajax-test.php" method="post">
<input type="text" name="name">
<input name="submit" type="submit">
</form>
<script>
// bind to the form's submit event
$('#formNewForm').submit(function() {
// inside event callbacks 'this' is the DOM element so we first
// wrap it in a jQuery object and then invoke ajaxSubmit
$(this).ajaxSubmit({
dataType: 'xml',
beforeSubmit: function () {
// something
},
error: function (jqXHR, textStatus, errorThrown) {
// something
},
success: function (responseXML) {
alert(responseXML);
}
});
// !!! Important !!!
// always return false to prevent standard browser submit and page navigation
return false;
});
</script>
答案 1 :(得分:0)
解决方案非常简单,因为它与脚本或生成的xml完全无关。它是由一些包含的php文件中使用的php结束标记(“?&gt;”)引起的,当一个新行在它之后。