首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jquery ajax在RESTful ajax服务上不返回任何传输

jquery ajax在RESTful ajax服务上不返回任何传输
EN

Stack Overflow用户
提问于 2012-07-07 01:37:37
回答 2查看 2K关注 0票数 0

我有一个RESTful webservice,我可以在发布的服务器上成功ping它,以将测试作为演示返回。然后,我尝试将一些代码放入方法中进行调用,但在AJAX调用中似乎失败了。我不知道错误在哪里,因为我不在本地主机上运行服务器。我知道webservice的调用是正确的,因为语法在设计上与test相同。

我有一个类似的方法,但它不是RESTful,所以我相应地迁移了所有数据,所以我知道方法中的代码工作正常。

下面是AJAX调用:

代码语言:javascript
运行
复制
$.ajax({
            type: 'GET',
            url: WEBSERVICE_URL + 'getWebFormDesignFieldContents',
            data: JSON.stringify({
                'pr_id': LOGGED_IN_PR_ID,
                'fe_name': opts,
                '_count': 200,  //this might need to be adjusted slightly.  I may want to make it more OR less.
                '_also_search_fe_desc': true,
                'opts': opts
            }),
            contentType: 'application/json; charset=utf-8',
            dataType: 'jsonp',
            success: function (result) {
                //success
                var r = $(result.getWebFormDesignFieldContentsResult)[0];
                var div = $("<div class='modal'>").html(r.d);
                /*
                var d = document.createElement("div");
                d.className = "modal";
                d.appendChild(r[0]);
                */
                $("div.modal").replaceWith(div);
                $("div.modal #queryInput").val(opts);
                $("div.modal").css({
                    top: $(window).height() / 2 - $("div.modal").height() / 2,
                    left: $(window).width() / 2 - $("div.modal").width() / 2
                });
                $("div.modal").fadeIn();
            },
            error: function (result) {
                //error
                //alert("Error: "+result.statusText);
                alert(result.statusText);

                //$("div.modal").replaceWith($("<div class = 'modal'>").html(result.responseText));
                //$("div.modal").fadeIn();
                $("div.overlay").fadeOut();
            }
        });

Webservice接口:

代码语言:javascript
运行
复制
[OperationContract]
    [WebInvoke(Method = "POST",
        ResponseFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Wrapped,
        UriTemplate = "getWebFormDesignFieldContents")]
    string getWebFormDesignFieldContents(WebFormFieldClass inputData);

Webservice函数

代码语言:javascript
运行
复制
public string getWebFormDesignFieldContents(string pr_id, string fe_name, string _count, string _also_search_fe_desc, string opts)
    {
       int count = Convert.ToInt32(_count);
       bool also_search_fe_desc = Convert.ToBoolean(_also_search_fe_desc);
       ...
    }

 [DataContract]
public class WebFormFieldClass
{
    [DataMember]
    public string pr_id { get; set; }
    [DataMember]
    public string fe_name { get; set; }
    [DataMember]
    public int count { get; set; }
    [DataMember]
    public string also_search_fe_desc { get; set; }
    [DataMember]
    public string opts { get; set; }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-10 23:18:37

这个问题来自浏览器,至少看起来是这样。所有这些信息都是正确的,但我得到的错误和问题来自IE和它对ajax的厌恶。这样做的另一个问题是,我们必须向ASP添加一堆引用,以使程序能够成功地处理来自目标的信息。

票数 0
EN

Stack Overflow用户

发布于 2012-07-07 01:43:25

编辑:

好的,你的问题是这是通过GET传递一个JSON对象作为数据。

但是很抱歉,对于GET请求,您需要使用查询字符串参数。如果你想发送一个完整的JSON对象,你应该使用POST。

另外,您的URIParameter添加一个前导斜杠'/‘,如下所示

代码语言:javascript
运行
复制
  /getWebFormDesignFieldContents

url: URL+'/getWebFormDesignFieldContents',

您有两种选择,一种是发出POST请求,另一种是使用GET传递参数,如'pr_id‘等作为UriTemplate参数

我在我的终端进行了如下测试:

代码语言:javascript
运行
复制
 <script src="Jquery-1.7.2.js" type="text/javascript"></script>
<script type="text/javascript">
    var URL = 'http://localhost:11431/Service1.svc/getWebFormDesignFieldContents';
    $.ajax({           
        type: 'POST',
        contentType: 'application/json',
        data: JSON.stringify({
            'pr_id': 'ss',
            'fe_name': 'ss',
            '_count': 22,  //this might need to be adjusted slightly.  I may want to make it more OR less.
            '_also_search_fe_desc': true,
            'opts': 'kk'
        }),     
        url: URL,

        success: function (data) {
            alert(data);
        },
        error: function (xhr, status, message) {
            alert("Error: " + status + " " + message);
        }
    });


</script>

我的IService1.svc

代码语言:javascript
运行
复制
 [OperationContract]
    [WebInvoke(Method = "POST",
     ResponseFormat = WebMessageFormat.Json,
     BodyStyle = WebMessageBodyStyle.Wrapped)]

    string getWebFormDesignFieldContents(string pr_id, string fe_name, string _count, string _also_search_fe_desc, string opts);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11367110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档