处理Web服务中的脚本

时间:2015-04-12 21:02:04

标签: jquery asp.net web-services

这是一个在CheckJs webmethod上加载脚本的web服务。

    [WebMethod(EnableSession = true)]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string CheckJs()
    {
        string script = "<script> (function() { alert('script loaded'); })(); </script>";

        return script;
    }

Checkscript.js

这里我们调用AJAX方法来使用webservice结果

function Loadarticlecomments() {
inputdata = {};        
var outputhtml = "";
var newurl = "/WebServices/CheckJsScript/WSScript.asmx/CheckJs";
var dataStrVal = "";

jQuery.ajax({
    type: "POST",
    url: newurl,
    data: dataStrVal,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(result) {            
        if (result.d != null && result.d.length > 0) {                
            $(".commentsid").html((result.d));
        }
    },
    error: function(result) {
        console.log('JS Script-  system failure');
        return false;
    }

});

}

脚本没有解雇。请问有人解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

当您在页面中插入脚本时,脚本没有触发,因为没有人执行它,只是站在那里。

您可以使用eval()来执行表示为字符串的javascrip代码。不要忘记从服务中删除 <script>标记。

// code
success: function(result) {            
    if (result.d != null && result.d.length > 0) {                
        eval(result.d); // execute script returned by service
    }
},
// other code

注意:在使用之前,请考虑阅读此内容Why is using the JavaScript eval function a bad idea?

var data = "(function() { alert('script loaded'); })()"
eval(data);