最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Error when calling webservice with jquery - Stack Overflow

programmeradmin0浏览0评论

I have read a lot about jquery and i have a webservice where i convert a panyID to the real panyName. Now i want to call that webservice with jquery or javascript. The webservice is on host http://webservice/service.asmx en i'm working on http://tlmos. I don't work and i always get an error

Here is my code:

<script type="text/javascript" src="http://kmosvi24/_layouts/jquery-1.3.2.min.js"></script>

<script type="text/javascript"> 
var test = "KBEACDNV";
$.ajax({
  type: "POST",
  contentType: "application/json; charset=utf-8",
  url: "http://webservice/service.asmx/getCompanyByCompanyID",
  data: "{'sCompanyID:' + 'test'}",              
  dataType: "json",
  succes:function(response){        alert("good");    },
  error: function(response) { alert("Uh oh"); },
 plete: function(response) {        alert("" + response);    }
});

</script>  

Can someone help me?

thx

I have read a lot about jquery and i have a webservice where i convert a panyID to the real panyName. Now i want to call that webservice with jquery or javascript. The webservice is on host http://webservice/service.asmx en i'm working on http://tlmos. I don't work and i always get an error

Here is my code:

<script type="text/javascript" src="http://kmosvi24/_layouts/jquery-1.3.2.min.js"></script>

<script type="text/javascript"> 
var test = "KBEACDNV";
$.ajax({
  type: "POST",
  contentType: "application/json; charset=utf-8",
  url: "http://webservice/service.asmx/getCompanyByCompanyID",
  data: "{'sCompanyID:' + 'test'}",              
  dataType: "json",
  succes:function(response){        alert("good");    },
  error: function(response) { alert("Uh oh"); },
 plete: function(response) {        alert("" + response);    }
});

</script>  

Can someone help me?

thx

Share Improve this question edited Apr 24, 2009 at 15:26 cgp 41.4k12 gold badges105 silver badges131 bronze badges asked Apr 24, 2009 at 13:29 idsisidsis 216 bronze badges
Add a ment  | 

7 Answers 7

Reset to default 6

Umm.. you spelled success wrong on line 11

.. and you probably want to format your data as

data: "sCompanyID=test"

Take a quick pass through the jQuery API page on this one to verify you are passing the parameters that your service expects. It looks like you are expecting a SOAP packet with an ASMX service, and jQuery is more suited to hitting a restful service generated from an ASHX file or WCF service.

You can make a request to a different server, but only if the call uses GET. Since all you do is lookup anyway, a GET request should be fine.

As some othe people have pointed out you cannot call a webservice on another domain, however as you are using ASP.NET, you can write a raw HTTP handler (normally with an .ashx extension to proxy your request from client to server.) Which you'd place on your "timos" server

so in your ashx file you can write something along the lines of...

public void ProcessRequest (HttpContext context)
{

    XmlDocument wsResponse = new XmlDocument();
    string url =  "http://webservice/service.asmx/getCompanyByCompanyID?CompanyID="
    context.Request.Form["CompanyID"].ToString()
    wsResponse.Load(url);
    string XMLDocument = wsResponse.InnerXml;        
    context.Response.ContentType = "text/xml";        
    context.Response.Write(XMLDocument);

}

Hope this helps.

You can't do AJAX calls to hosts other than your own. If you really have to do this make a call to your own server and use a simple proxy to redirect to the domain you need.

You could do this for example by using a ProxyPass-directive in your webserver:

ProxyPass         /service/ http://webservice/service.asmx
ProxyPassReverse  /service/ http://webservice/service.asmx

Then you can issue an AJAX-request to /service/getCompanyByCompanyID and it will be proxied to the correct URL.

I don't think you are using the data parameter right, usually it's a key-value pair like:

data: {sCompanyID: 'test'}

I believe that they way you are using it will result in jQuery attempting to post to http://webservice/service.asmx/getCompanyByCompanyID?sCompanyID:blah

Also aren't .NET web services SOAP? I don't think jQuery can parse that...

edit: Nevermind, didn't realize you were passing these as json data. Thanks menters!

In order to run your web-services from Jquery, you should use either WCF or just usual web services, but you should add [ScriptMethod] to your service's method and [ScriptService] to your webservice description.

Wow wow just noticed that you're trying to call the service from one host to another... that one won't work. service should be hosted on the same domain as the page where it's being called from.

as a reply to Jeff's answer, correct way to format data is data: {key: "value"}

With jQuery Ajax Requests you need to use the following format when defining the variables to be sent in the request:

data: "variableName=variableContent",

You wrote:

 data: "{'sCompanyID:' + 'test'}"

This won't work for two reasons:
- You have included curly brackets which don't need to be there.
- You have used a semi-colon,":", instead of an equals sign,"=".

So long as you change these it should work.

P.S I only just realized that Jeff Fritz has already given you the right answer. His answer is spot on!

发布评论

评论列表(0)

  1. 暂无评论