服务器结果到网页

本文关键字:网页 结果 服务器 | 更新日期: 2023-09-27 17:50:05

我试图简单地写一些数据到我的网页作为回调的结果。直到需要输出回调结果时,一切都正常运行。

客户端:

function toServer(data) {
    var dataPackage = data + "~";
    jQuery('form').each(function () {
        document.getElementById('payload').value = JSON.stringify({ sendData: dataPackage });
        $.ajax({
            type: "POST",
            async: true,
            url: window.location.href.toString(),
            data: jQuery(this).serialize(),
            success: function (result) {
                //this does not work because it just puts an entire source code copy of my site in there instead...
                //document.getElementById('searchResults').value = result
                console.log("callback compelete");
            },
            error: function(error) {
                console.log("callback Error");
            }
        });
    });
}

服务器端:(在页面加载时)

            //holds actions from page
            string payload = HttpContext.Current.Request.Form["payload"] ?? String.Empty;
            // See if there were hidden requests (callbacks)
            if (!String.IsNullOrEmpty(payload))
            {
                string temp_AggregationId = CurrentMode.Aggregation;
                string[] temp_AggregationList = temp_AggregationId.Split(' ');
                Perform_Aggregation_Search(temp_AggregationList, true, Tracer);
            }
            else
            {
                HttpContext.Current.Session["SearchResultsJSON"] = "";
            }

服务器端代码的其余部分正常工作,只是处理传入的解析和执行数据库的搜索,然后将搜索结果解析为JSON对象。

目前,json对象写入页面的唯一方法是,如果我调用它没有回调(只是在页面加载时调用它)。此外,在firebug中,看起来整个页面源都是作为回调的"结果"发回的。我确实看到我的json结果张贴回来的"结果",但它也包含了整个页面的HTML。

此外,我似乎无法得到的结果张贴到网页上,这是重点。实际上,我可以通过在客户端代码中取消注释来获得发布到页面的结果,但它发布了我的网站的副本,而不是我认为我创建的实际结果…

我错过了什么?如何在c#代码中显式地声明返回给JS回调的"结果"?

服务器结果到网页

您将获得整个页面,因为您正在向ASP发出请求。网络页面。实际上,您请求的是与您正在浏览的页面不同的页面。服务器返回的是提交表单时的返回值。

要获取JSON数据,你需要创建一个web方法来处理你的请求。阅读这篇文章,它会对你有所帮助。它向您展示了如何返回简单文本,但您也可以返回JSON。这篇MSDN文章的信息。

最后,要确保jQuery将服务器响应解析为JSON,请更改请求并显式指出:

function toServer(data) {
    var dataPackage = data + "~";
    jQuery('form').each(function () {
        document.getElementById('payload').value = JSON.stringify({ sendData: dataPackage });
        $.ajax({
            type: "POST",
            async: true,
            url: window.location.href.toString(),
            data: jQuery(this).serialize(),
            dataType: 'json',
            success: function (result) {
                //this does not work because it just puts an entire source code copy of my site in there instead...
                //document.getElementById('searchResults').value = result
                console.log("callback compelete");
            },
            error: function(error) {
                console.log("callback Error");
            }
        });
    });
}