Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于从aspx页面调用代码隐藏方法的AJAX代码不';行不通_Javascript_Jquery_Asp.net_Ajax - Fatal编程技术网

Javascript 用于从aspx页面调用代码隐藏方法的AJAX代码不';行不通

Javascript 用于从aspx页面调用代码隐藏方法的AJAX代码不';行不通,javascript,jquery,asp.net,ajax,Javascript,Jquery,Asp.net,Ajax,单击锚定链接后,我想调用代码隐藏函数(将一些HTML内容代码加载到页面中) 背后的代码: public void loadNewPage(string id) { ltlContent.Text = getPageCenter(id); } using System.Web.Services; [WebMethod()] public static string loadNewPage(string id) { string result = g

单击锚定链接后,我想调用代码隐藏函数(将一些HTML内容代码加载到页面中)

背后的代码:

public void loadNewPage(string id)
    {
        ltlContent.Text = getPageCenter(id);
    }
using System.Web.Services;

[WebMethod()]
public static string loadNewPage(string id) {
       string result = getPageCenter(id);
       return result;
}
JS代码:

$('a').click(function (e) {
            e.preventDefault();
            var data = { userName: $(this).attr("id") };
            var dataVal = JSON.stringify(data);

            $.ajax({
                type: "POST",
                url: "Default.aspx/loadNewPage()",
                contentType: "application/json; charset=utf-8",
                data: dataVal,
                dataType: "json",
                success: function (id) {
                }
            });
        });
HTML:


我得到的只是在URL后面添加了
#
,并且没有调用代码隐藏函数。

尝试以下操作:

在您的锚中,请执行以下操作:

<a href="javascript:void(0)" id="kontakt">Go to Kontakt</a>
试试这个:

JavaScript:

$(document).ready(function(){

    $('a').click(function (e) {
         e.preventDefault();
         var data = { 'id': $(this).attr("id") };
         var dataVal = JSON.stringify(data);

         $.ajax({
                type: "POST",
                url: "Default.aspx/loadNewPage",
                contentType: "application/json; charset=utf-8",
                data: dataVal,
                dataType: "json",
                success: function (data) {
                    var htmlStr = data.d;
                    $('#ltlContent').html(htmlStr);
                }
         });
    });
});
C#代码隐藏:

public void loadNewPage(string id)
    {
        ltlContent.Text = getPageCenter(id);
    }
using System.Web.Services;

[WebMethod()]
public static string loadNewPage(string id) {
       string result = getPageCenter(id);
       return result;
}

如果一切正常,那么只要在jquery ajax调用成功的任何地方插入html字符串即可

您的
dataVal
{'username':idvalue}
组成,并且您的方法需要一个参数id,此外,从
url:“Default.aspx/loadNewPage()”
将您的键也用引号括在数据中,即var数据中={'id':value}我认为您的代码隐藏可能是错误的。您无法通过web服务调用访问页面上的控件。例如,
ltlContent
将被删除inaccessible@zgood-那么,关于将字符串中的HTML代码注入页面,您有何建议?我已经尝试了
href=“javascript:void(0)”
以前的方式,但它不起作用。Ofc,我没有添加
#
,但该函数仍然没有被调用。即使我将
用户名
固定到
id
,仍然没有效果。尝试调试脚本,使用chrome调试器(f12)或者firebug,看看有什么错误
uncaughttypeerror:cannotcall'getElementsByTagName'方法为null
就是我得到的。我读到的是当脚本在头部时,它在元素之前加载,然后它们就不可访问了。你有什么建议吗?看,这个错误仅仅意味着,无论你试图找到什么标记,都是not可用,标记名错误或dom尚未构造。请尝试将整个js脚本包装在
$(文档).ready(function(){//here your code});
中,或将整个代码放在
正文的末尾,但仍不成功。(完成了这两项操作)。有可能使代码隐藏方法非静态吗?它会这样工作吗?你说的“在ajax调用成功的过程中,将html字符串放在我想要的任何地方”是什么意思?
警报(data.d)
对于这一点?对于非静态方法,简短回答:否。长回答:。在WebMethod调用返回时,会返回一个json字符串,在这种情况下,jQuery将自动将其解析为对象-
数据。您可以
控制台.log(数据)
查看它包含的内容。
data.d
是您的
getPageCenter(id)
的有效负载,我假设它是您试图加载的页面的html字符串(这里我可能错了)。因此,您希望将其加载到
ltlContent
控件中,就像这样-
$('#ltlContent').html(data.d);
另外,如果您的
ltlContent
控件是