我想从静态方法运行一个简单的警报脚本(与未来的运行功能的意图),但它不显示我的警报(如果我在页面加载事件它工作正常):无法从静态方法运行Javascript
Page page = HttpContext.Current.CurrentHandler as Page;
if (page != null)
{
string myScript = "<script type=\"text/javascript\" language=\"Javascript\">";
myScript += "alert('hi');";
myScript += "</script>";
page.ClientScript.RegisterClientScriptBlock(page.GetType(), "alert", myScript);
}
如果我调试ClientScript
确实运行,请问有人可以帮忙吗?
编辑
这是一个示例脚本,我想success event of ajax webmethod
后运行:
<script type="text/javascript">
var OrderReference = '<%= Id %>';
var EID = <%= EId %>;
var Comment = '';
var SubDomain = 'track';
if (location.protocol.toLowerCase() == 'https:')
wgProtocol = 'https';
else
wgProtocol = 'http';
Uri = wgProtocol + '://' + SubDomain + '.test.com/tr.html' + '?&eid=' + EID
+ '&orderreference=' + OrderReference ;
document.write('<sc' + 'ript language="JavaScript" type="text/javascript" src="' + Uri + '"></sc' + 'ript>');
</script>
<noscript>
<img src='http://test.com/transaction.html?ver=1&eventid=<%= EId %>&wgorderreference=<%= Id %>&' alt='' />
</noscript>
已经试图返回上面的脚本为字符串,并以AJAX方法尝试以下,但得到400 bad request
在Firebug中:
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = result;
document.body.appendChild(script);
E DIT 2:
我创建了这个类:
[Serializable]
public class PixelGenericResults
{
public int Id{ get; set; }
public string Script { get; set; }
}
在我的静态方法我做的:
var g = new GenericResults();
g.Id = 2;
g.Script = AffiliateTracking.getScript(g.Id); //This gets me the above script
HttpContext.Current.Response.ContentType = "application/json";
strReturn = new JavaScriptSerializer().Serialize(g);
,并在成功aspx页面我所做的:
success: function (result) {
if (result.hasOwnProperty("d")) { result = result.d; }
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = result.Script;
document.getElementsByTagName('body')[0].appendChild(script);
}
但运行它时,我得到这个错误在萤火虫"NetworkError: 404 Not Found - http://localhost:5822/undefined"
如何调用该方法?什么叫它? –
我正在使用ajax来调用一个静态的[WebMethod]并且正在调用上述方法.. – Zaki
@Zaki这就是要点:使用AJAX,你不能直接在服务器端与客户端页面交互,你必须返回一些值给AJAX调用,然后通过JS动作客户端来创建警报 – LittleSweetSeas