这是我第一次使用ajax,我正在波士顿新网站上学习。但我收到以下错误
第6行第8行的错误:仅在文档开头允许XML声明
我尝试删除通常似乎是修复的白色空格但是没有用。任何建议都会很棒。
<?php
header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
echo '<response>';
$staus;
$email_in_use = $_GET['email'];
$query = mysqli_query($link, "SELECT * FROM emails WHERE email='".$email_in_use."'");
if(mysqli_num_rows($query) > 0){
$staus = false;
return $status;
}else{
// do something
if (!mysqli_query($con,$query))
{
die('Error: ' . mysqli_error($con));
}else{
$staus = true;
return $status;
}
}
echo '</response>';
?>
答案 0 :(得分:0)
您的脚本中存在许多问题。
首先,$staus
不是$status
:统一变量名称。
但核心问题是您的脚本将从不输出Corrext XML文件:
if (!mysqli_query($con,$query))
{
die('Error: ' . mysqli_error($con));
}else{
$staus = true;
return $status;
}
die()
和return
停止脚本执行,因此不会打印关闭</response>
标记。
顺便说一句,你的错误与示例中的代码无关,除非你在<?php
声明之前有空格或其他内容。
以您的方式输出XML并不是一个好主意,它可以更好地分离执行代码和输出。像这样:
$email_in_use = $_GET['email'];
(...)
if( !mysqli_query( $con, $query ) )
{ $status = mysqli_error( $con ); }
else
{ $status = 'OK'; }
header( 'Content-Type: text/xml' );
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
echo '<response>';
echo '<status>'.$status.'</status>';
echo '</response>';
结束注意事项:为了保证XML的正确性,我建议您使用XML Parser。使用SimpleXML,即您可以这样写:
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8" standalone="yes" ?><response><status/></response>');
$xml->response->status = $status;
echo $xml->asXML();
答案 1 :(得分:-1)
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
这应该是您页面的第一行。 XML希望这是第一行;没有例外。
PS。如果您删除header('Content-Type: text/xml');
它会工作。
我认为这里发生的是这条线干扰了开放的xml。