从javascript函数添加js文件ref

时间:2011-05-12 05:53:30

标签: javascript asp.net ajax

我正在处理一个动态创建输入控件的任务,我正在使用c#代码中的streamwriter创建一个js文件来验证输入控件。现在我想在我的aspx页面中添加对当前创建的js文件的引用。

我的创建输入控件方法是一个web方法,我从客户端使用ajax-json调用它。 网络方法:

[WebMethod]
public static string LoadDatanGenerateControls(int PostTypeID, int CategoryID)
{
    DataTable dtControls = new DataTable();
    StringBuilder sb = new StringBuilder();
    dtControls = PostingExtendedFields.GetExtendedDFields(PostTypeID, CategoryID);
    sb.Append("<table>");
    foreach (DataRow dr in dtControls.Rows)
    {
        sb.Append("<tr><td>");
        sb.Append("<input value=';" + dr["RequiredError"].ToString() + "'; type=';text'; size=';20'; id=';txt_" + dr["FieldName"].ToString() + "'; class=';riTextBox riEmpty'; style=';width:450px;'; onfocus =';Focus(this);'; onblur=\"Blur(this,';" + dr["RequiredError"].ToString() + "';);\"/>");
        sb.Append("</td></tr>");
    }
    sb.Append("</table>");
    //create the js file
    string path = HttpContext.Current.Server.MapPath("") + "\\";
    if (File.Exists(path + "sale.js")) File.Delete(path + "sale.js");//delete if exist
    using (StreamWriter sw = new StreamWriter(path + "sale.js"))
    {
        sw.WriteLine("function Focus(obj) {");
        sw.WriteLine("var id = obj.id;");
        sw.WriteLine("$(';#'; + id).val(';';);");
        sw.WriteLine(" }");
        sw.WriteLine("function Blur(obj, title) {");
        sw.WriteLine("var id = obj.id;");
        sw.WriteLine("if ($(';#'; + id).val() == ';';) {");
        sw.WriteLine("$(';#'; + id).val(title);");
        sw.WriteLine("}");
        sw.WriteLine(" }");
    }
    return sb.ToString();
}

在aspx页面上:

 function LoadControls() {
        try {
            var types = $find("<%= ddlPost.ClientID %>");
            var Category = $find("<%= ddlCategory.ClientID %>");
            var typeID = types.get_value();
            var catID = Category.get_value();
            ///web method
            $(';#TDDynamicContents';).html(';';);
            $.ajax({
                type: "POST",
                url: "Default.aspx/LoadDatanGenerateControls",
                data: "{';PostTypeID';:';" + typeID + "';,';CategoryID';:';" + catID + "';}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(msg) {
                    if (msg.d.length > 0) {
                        $(';#TDDynamicContents';).html(msg.d);
                        //add js file path
                        addjsfile("sale.js", "js")
                    }
                },
                async: false,
                error: function(xhr, status, error) {
                    alert(xhr.statusText);
                }
            });
        } catch (e) { }
    }

    function addjsfile(filename, filetype) {
        alert(filetype);
        if (filetype == "js") {
            var fileref = document.createElement(';script';);
            fileref.setAttribute("type", "text/javascript");
            fileref.setAttribute("src", filename);
        }
        if (typeof fileref != "undefined") {
            document.getElementsByTagName("head")[0].appendChild(fileref);
            alert(fileref);
        }
    }

但我的addjsfile函数根本不起作用。 它没有在Head部分添加引用,我无法在js文件中使用函数。

1 个答案:

答案 0 :(得分:0)

您的问题的解决方案是在您使用js功能的任何地方使用以下代码行,或者只是在页面加载时使用 ClientScript.RegisterClientScriptInclude( “MyScript可”, “MyJavaScript.js”) 更详细的讨论是here


如果您只打算使用javascript块执行此操作,那么请查看它是否有任何帮助

Click Here