我有一个小网站,我试图从数据库中获取某个列(SQL Server Management Studio)并将这些值插入下拉列表中。
我的HTML代码加载了一个带有下拉列表的简单页面。
<html>
<body onload = "Location();">
<h4>Home Page</h4>
CompanyName
<select id="company" name="C1" >
<option>Pick A Location</option>
</select>
</body>
<html>
在我的JavaScript函数执行任何&#34; work&#34;它导航到c#页面。我调试了c#代码并且输出正确。它显示:
"<root>\n<CompanyName>\n\t<option>AAA</option>\n\t<option>BBB</option>\n\t<option>CCC</option>\n\t<option>DDD</option>\n\t<option>EEE</option>\n\t<option>FFF</option>\n\t<option>GGG</option>\n\t<option>HHH</option>\n</CompanyName>\n</root>"
这只是数据库中我需要输入到下拉列表中的列。 javascript函数应该抓住这段代码并深入到选项部分,并将每个选项逐个放入下拉列表中。出于某种原因,在从c#页面导航到javaScript页面之间,我丢失了xml信息。有什么东西我缺少或有什么不正确的?谢谢。
function Location() {
$.ajax({
url: "Test.aspx",
beforeSend: function (xhr) {
xhr.overrideMimeType("text/plain; charset=x-user-defined");
}
}).done(function (data) {
if (console && console.log) {
xml = data;
xmlDoc = $.parseXML(xml);
$xml = $(xmlDoc);
var settingHTML = "";
settingHTML += "<option value = 'null' > Pick a Location </option>";
$xml.find('root').each(function () {
$xml.find('CompanyName').each(function () {
// one at a time
$(this).children().each(function () {
settingHTML += "<option value='" + $(this).text() + "' >" + $(this).text() + "</option>";
});
});
});
$("#company").html(settingHTML);
}
});
}
我还要添加我的c#代码,因为它似乎可能是我返回字符串的方式
public partial class Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string root = "<root>\n";
root += fill_company();
root += "</root>";
Response.Write(root);
}
protected string fill_company()
{
OdbcDataReader reader;
string myConnString = "DSN=DevSql12-1;";
OdbcConnection conn = new OdbcConnection(myConnString);
OdbcCommand mycommand = new OdbcCommand();
mycommand.Connection = conn;
conn.Open();
mycommand.CommandText = "SELECT CompanyName FROM [PS_Settings].[cams].[Client];";
reader = mycommand.ExecuteReader();
string CompanyLocation = "";
CompanyLocation += "<CompanyName>\n";
object[] meta = new object[1];
bool read;
if (reader.Read() == true)
{
do
{
int NumberOfColumns = reader.GetValues(meta);
for (int i = 0; i < NumberOfColumns; i++)
{
CompanyLocation += "\t<option>" + meta[i].ToString() + "</option>\n";
}
read = reader.Read();
} while (read == true);
}
CompanyLocation += "</CompanyName>\n";
return CompanyLocation;
}
}
答案 0 :(得分:0)
问题是我没有显示实际输出(实际上并不是AAA,BBB),但我错误的原因是因为其中一个选项有&#39;&amp;& #39;,我忘了逃避它。