Я работаю над проектом, в котором хочу реализовать AJAX, и выбрал jQuery в качестве библиотеки JavaScript. Вот HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml">
<head runat = "server">
<title>jQuery AJAX</title>
<!--<script language = "javascript" type = "text/javascript" src = "inc/scripts.js"></script>-->
<script language = "javascript" type = "text/javascript" src = "inc/jquery-1.2.6-intellisense.js"></script>
<script language = "javascript" type = "text/javascript">
$(document).ready(function(){
$("#clicker").click(function () {
$.ajax({
type: "POST",
url: "test.aspx/randomString",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
$("#result").append(msg.d);
}
});
});
});
</script>
</head>
<body runat = "server">
<form id = "form1" runat = "server">
<div id = "result" runat = "server" style = "margin-bottom:5em;"></div>
<div id = "clicker" runat = "server" style = "cursor:pointer;">Click Here to Refresh</div>
</form>
</body>
</html>
А вот и бэкенд на test.aspx:
<WebMethod()> _
Public Shared Function randomString() As String
Dim KeyGen As RandomKeyGenerator
Dim NumKeys As Integer
Dim i_Keys As Integer
Dim RandomKey As String
Dim oRet As New StringBuilder
NumKeys = 20
KeyGen = New RandomKeyGenerator
KeyGen.KeyLetters = "abcdefghijklmnopqrstuvwxyz"
KeyGen.KeyNumbers = "0123456789"
KeyGen.KeyChars = 12
For i_Keys = 1 To NumKeys
RandomKey = KeyGen.Generate()
oRet.AppendLine(String.Format("{0}{1}", RandomKey, ControlChars.NewLine))
Next
Return oRet.ToString
End Function
Я пробовал $("#result).text(msg.d), а также формировал список String.Format("<li>{0}</li>",RandomKey) и добавлял тег прерывания String.Format("{0}<br />",RandomKey).
Когда я запускаю страницу, она возвращается в виде одной строки, отображается весь HTML. Что мне нужно сделать, чтобы он отобразил HTML?
Я получил информацию о том, как вызвать страницу без ScriptManager из этот сайт.





Почему вы используете json в качестве dataType, когда возвращаете html? Используйте "html" как dataType и замените msg.d на msg.
Откуда этот объект json? Это не очевидно из предоставленного вами исходного кода. Вы используете веб-службу с привязками json?
Причина, по которой он использует этот конкретный синтаксис вызова, заключается в том, чтобы заставить веб-службу ASMX возвращать JSON, даже если это не ASP.NET AJAX, выполняющий запрос. Это необходимо.
Если вам нужно поместить html в узел, например, если у вас есть div с id = container. Вы делаете это так $ ('# container'). Html (htmlContent) ;. Но будьте осторожны, ответ, который вы получаете от сервера, не должен быть преобразован html в безопасные строки (с символьными объектами). Но вы также используете json в качестве типа данных. Вы должны использовать для этого текст. Или возьмите строку из переменной json, которую вы получаете с сервера, и поместите ее в узел.
Я просто скопировал / вставил код с веб-сайта, на который ссылался в своем сообщении. изменение параметров в запросе дает мне тот же результат, что и предложение кг
Использовать:
$("#result").html(msg.d)
Когда я изменил его на HTML / msg, я получил следующее: {"d": "r537pkRW553b \ r \ n \ r \ nOzgN1mf3u5 .... <- многое другое, откуда это взялось, но определенно не то, что я ищу .