0

我在一个应该调用 Web 服务的 HTML 页面上运行 Ajax,而 ajax 调用在我不相信它甚至根本不会访问 Web 服务的地方不起作用。

这是问题所在:当我单击按钮时,我收到 textStatus 错误,而 errorThrown 则没有。本地主机在我的 VS 2013 IDE 中运行,带有断点,并且永远不会到达那里。该项目的性质决定了我使用 HTML 页面和 JQuery 将收集到的数据传递给 Web 服务以管理数据。但是,它好像从未运行过,我能找到的每个参考资料都说这段代码是正确的。我关心的两件事是使用 JSON 来提供数据合约的参数。如果没有将其转换为数据合同类,这将如何工作。我也尝试了很多方法来传递 JSON,但似乎没有一个能改变我的命运。如果我可以生成一个错误来调试,那至少会帮助我指出正确的方向,但我得到了 nada... 问题是我 我已经尝试使用一个将操作设置为 ashx 页面的表单来执行此过程,并且可以正常工作,但这似乎更像是一种 hack,因为我必须停止一些东西才能返回调用的 html 页面来说明您的数据已提交。另外,我认为 Jquery Ajax 是一种更简洁、更优雅的解决方案。此 Web 服务中有几种方法已经可以让其他项目接受和管理他们的数据,我想扩展它以包含 html 页面数据......谁能看到我在哪里出错了?提前非常感谢...在过去的两天里,我一直被这个难住,我必须继续前进。我认为 Jquery Ajax 是一个更干净更优雅的解决方案。此 Web 服务中有几种方法已经可以让其他项目接受和管理他们的数据,我想扩展它以包含 html 页面数据......谁能看到我在哪里出错了?提前非常感谢...在过去的两天里,我一直被这个难住,我必须继续前进。我认为 Jquery Ajax 是一个更干净更优雅的解决方案。此 Web 服务中有几种方法已经可以让其他项目接受和管理他们的数据,我想扩展它以包含 html 页面数据......谁能看到我在哪里出错了?提前非常感谢...在过去的两天里,我一直被这个难住,我必须继续前进。

代码如下:

    $(document).ready(function () {

      //  alert("running inside");
        var webServiceURL = 'http://localhost:50350/DBMgr.svc/updateData';
        var data = "{FirstName:'name',LastName:'surname'}";

        alert(data);

        $("input[id='btnSubmitLead']").click(function () {
            $.ajax({
                type: "POST",
                url: webServiceURL,
                data: data,
                dataType: "json",
                success: function (results) {
                    alert("Your information has been sent, thank you... ");
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    alert(textStatus +"-"+ errorThrown);
                    alert("Your information has not been sent ");
                }
            });
        });

我的 WCF 服务:

    public LeadData updateData(LeadData loadData)
    {
        LeadData updateok = new LeadData();

        if (loadData.FirstName.Length > 0)
        {
            updateok.FirstName = "It has";
            updateok.LastName = "Been found";
        }
        else
        {
            updateok.FirstName = "Name";
            updateok.LastName = "Not Found";
        }

        return updateok;
    }

声明是:

    [OperationContract]
    [WebInvoke(Method="POST", RequestFormat=WebMessageFormat.Json, ResponseFormat=WebMessageFormat.Json)]
    LeadData updateData(LeadData loadData);


[DataContract]
public class LeadData
{

    [DataMember]
    public string FirstName { get; set; }

    [DataMember]
    public string LastName { get; set; }

}

哦,是的,HTML 包括以下内容:

      <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" type=""></script>
4

1 回答 1

0

可能是因为你的 HTML5 应用和 wcf 服务的域不一样。试试 jsonp: 什么是 JSONP? 希望能帮到你。

于 2013-09-22T10:02:37.263 回答