C# 从asmx调用javascript函数
我想以如下字符串的形式从asmx返回javascript函数 所有html标记都会返回,但checkNewMsgvariant'script tag'不会返回! 到底发生了什么 请指教C# 从asmx调用javascript函数,c#,json,web-services,asmx,C#,Json,Web Services,Asmx,我想以如下字符串的形式从asmx返回javascript函数 所有html标记都会返回,但checkNewMsgvariant'script tag'不会返回! 到底发生了什么 请指教 <script type="text/javascript"> function getWindow(FromUserID, UserID, PerID, UserName) { $.ajax({ type: "POST", u
<script type="text/javascript">
function getWindow(FromUserID, UserID, PerID, UserName) {
$.ajax({
type: "POST",
url: "TestMessageService.asmx/OpenWindow",
data: "{'FromUserID': '" + FromUserID + "', 'ClickedUserID': '" + UserID + "', 'ClickedPerID': '" + PerID + "', 'ClickedUserName': '" + UserName + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
var msgs = response.d;
$('#div_Panel').append(msgs).fadeIn("slow");
var elements = $('.panelContent');
for (var i = 0; i < elements.length; i++) {
elements[i].scrollTop = elements[i].scrollHeight;
}
},
failure: function (msg) {
$('#div_Panel').text(msg);
}
});
}
</script>
[WebMethod]
[System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)]
public string OpenWindow(string FromUserID, string ClickedUserID, string ClickedPerID, string ClickedUserName)
{
string checkNewMsg = "<script type=\"text/javascript\">window.setInterval(fc_" + ClickedUserName.Replace(" ", "") + ", 10000); function fc_" + ClickedUserName.Replace(" ", "") + "() { alert('" + ClickedUserName + "'); }</script>";
StringBuilder sb = new StringBuilder();
sb.Append(checkNewMsg + "<div class=\"ch_Box\">");
sb.Append("<div class=\"ch_Header\">");
sb.Append("<div style=\"float:left;margin-top: 9px;margin-left: 8px;\"><img src=\"Images/Status.png\"></div>");
sb.Append("<div id=\"roomUsers\" class=\"ch_HeaderItem\">" + ClickedUserName + "</div>");
sb.Append("<div onclick=\"closePanel(this)\" style=\"width: 23px; height: 27px; cursor: pointer; position: absolute; margin-left: 232px;\"><img style=\"height: 20px; margin-top: 4px;\" src=\"Images/close.png\"></div>");
sb.Append("<div id=\"cont_" + ClickedUserID + "\" class=\"panelContent\">" + FillMessages(roomID, FromUserID.ToInt()) + "</div>");
sb.Append("<div class=\"ch_Text\">");
sb.Append("<input id=\"msg_" + FromUserID + "_" + ClickedUserID + "_" + ClickedPerID + "_" + roomID + "\" type=\"text\" class=\"inp\" onkeypress=\"PushText(this)\" autocomplete=\"off\" /></div>");
sb.Append("</div></div>");
return sb.ToString();
}
函数getWindow(FromUserID、UserID、PerID、UserName){
$.ajax({
类型:“POST”,
url:“TestMessageService.asmx/OpenWindow”,
数据:“{'FromUserID':'“+FromUserID+”,'ClickedUserID':'“+UserID+”,'ClickedPerID':'“+PerID+”,'ClickedUserName':'“+UserName+”}”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(响应){
var msgs=响应.d;
$('div_Panel').append(msgs.fadeIn(“slow”);
var元素=$('.panelContent');
对于(var i=0;i
我不知道为什么不返回脚本标记asmx,但当我删除标记,然后在js端,在返回值之前添加脚本标记时,问题就解决了
就这样,
asmx侧
string checkNewMsg = "window.setInterval(fc_" + ClickedUserName.Replace(" ", "") + ", 10000); function fc_" + ClickedUserName.Replace(" ", "") + "() { alert('" + ClickedUserName + "'); }#func#";
在Js侧
success: function (response) {
var msgs = response.d;
var arrCont = msgs.split('#func#');
var MsgCont = "<script type=\"text/javascript\">" + arrCont[0] + "<\/script>";
成功:功能(响应){
var msgs=响应.d;
var arrCont=msgs.split('func');
var MsgCont=“”+arrCont[0]+”;
我想问你…为什么你使用Json作为响应格式,然后注入一堆HTML?在你的客户端中发出数据,然后格式化数据,因为有太多的cont(id(来自db的id))div和我必须知道哪个div Requiure js函数。显然,这并不能解决具体问题,但我认为你试图用锤子拧螺丝:)我会试试,谢谢。