2012-04-03 13 views
1

Ich versuche, externe Website Webmethod aufzurufen und einige Daten zu veröffentlichen. Ich habe viele verschiedene Möglichkeiten ausprobiert und kann die Methode nicht aufrufen.Rufen Sie externe Website Webmethod mit Jsonp?

Hier ist mein js Code:

$.ajax({ 
      url: "http://sitename.com/methods.aspx/mywebmethod", 
      data: "{'id':'" + 4 + "'}", 
      dataType: "jsonp", 
      type: "GET", 
      contentType: "application/json; charset=utf-8", 
      success: function (data) { 
       alert(data); 
      }, 
      error: function (XMLHttpRequest, textStatus, errorThrown) { 
       alert(errorThrown); 
      } 
     }); 

Hier ist mein Webmethod Code:

[WebMethod()] 
     public static bool mywebmethod(int id) 
     { 
if(id != 0){ 
      return true;} 
else{return false;} 
     } 

und ich bekomme immer die gleiche Antwort

Error: jQuery{code} was not called 

Was mir persönlich fehlt ?

Antwort

3

JSONP ist keine Magie.

Sie können JSONP nur zum Lesen von Daten von einer URL verwenden, die JSONP script zurückgibt.
ASP.Net WebMethods unterstützen JSONP nicht.

+0

Wie kann ich Daten posten? – Steven

+2

Sie können nicht. Sie müssen verstehen, wie JSONP funktioniert. http://en.wikipedia.org/wiki/JSONP – SLaks

+0

Jede andere Möglichkeit, Daten zu veröffentlichen? JSONP wird nicht verwendet !!! – Steven

0

Ich denke, man die richtigen Attribute fehlt, wie folgt zusammen (in einer .asmx Definition):

[WebMethod(EnableSession = true)] // optional, but usually forgotten 
    [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)] 
    public bool MyMethod(int id) 
    { 
     return true; 
    } 

plus, Sie die führenden Callback-Parameter für die Handhabung als auch Inhalt-Rewrite-Modul haben müssen:

http://www.codeproject.com/Articles/43038/Accessing-Remote-ASP-NET-Web-Services-Using-JSONP