从AJAX调用REST服务方法

时间:2014-03-26 11:48:23

标签: javascript php ajax rest

我从AJAX调用REST服务方法。

$(document).ready(function () {
        var xmml = getXmlLoginRequest();
        var wsdlURL = getWSDL('search');
        $.ajax({
            type: "POST",
            url: wsdlURL,   
            data: xmml, 
            contentType: "text/xml;charset=utf-8",
            dataType: 'text',
            success: function (result) {
                debugger;
                alert(" success" + result);
            },
            error: function (jqXHR, textStatus, errorThrown) {
                debugger;
                alert(" error" + "jq :" + jqXHR + "textStatus :" + textStatus + "error : " + errorThrown);
            }
        });

        function getXmlLoginRequest() {
            debugger;
            var xml = '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> \
             <soap:Body> \
                <search> \
                <qry>svein </qry> \
                </search> \
             </soap:Body> \
           </soap:Envelope>';

            return xml;
        }
        function getWSDL(methodName) {
            debugger;
            var url = 'http:/MyURL/search.php?username=abc&password=def';
            return url;
        }

    });  

我在成功块中获得结果为空。如果我将dataType更改为text,我会在“失败”块中看到cannot parse NULL的异常 我写的语法不正确吗?当我使用方法及其参数在浏览器上运行url时,它会给出正确的结果。

2 个答案:

答案 0 :(得分:1)

我在这里看到的是SOAP而不是REST。您应该直接尝试jQuery SOAP Plugin而不是jQuery AJAX方法。

此外,WSDL Url不是服务URL,而是服务描述的URL。服务URL位于WSDL中。

由于同源策略,服务应与html页面位于同一域中。

答案 1 :(得分:0)

dataTytpe只能是xml, json, script, or html。保留默认值为Intelligent Guess

另外,请确保网址wsdlURL不会违反same-origin policy