2017-01-05 3 views
0

Ich habe über diesen Fehler viele Artikel gelesen, ich habe viele Lösungen ausprobiert, aber nichts funktioniert! Ich bin mit diesem Fehler seit 3 ​​Tagen fest, ich hoffe, dass mir jemand helfen kann, danke! Was ich tue, ist meine Webservice von meinem MyPage.aspx durch zwei Möglichkeiten Aufruf:Objekt des Typs 'Objekt' kann nicht in den Typ 'Array' konvertiert werden

A-)

MyWebservice.MyWebMethod("test",LunchMyFunction); 

function LunchMyFunction(response) { 
    alert(response); // [object Object] 
    var gridView = $find('<%= MyGridView.ClientID %>'); 
    gridView.set_dataSource(response); 
    gridView.dataBind(); 
} 

Hier ist der gridview gefüllt ist richtig und alles ist in Ordnung.

B-)

$.ajax({ 
     type: "POST", 
     url: 'MyWebservice.asmx/MyWebMethod', 
     data:{ testVal : "test" }, 
     success: function (response) { 
      alert(response); // [object XMLDocument] 
      var gridView = $find('<%= MyGridView.ClientID %>'); 
      try { 
      gridView.set_dataSource(response); 
      } catch (err) { 
       alert(err); 
      } 
      gridView.dataBind(); 
     }, 
     error: function (err) { alert(err.statusText); } 
}); 

Hier ist meine Web-Methode ist die Vollendung es ist Arbeit, aber wenn es um setDataSource kommt: ein Fehler ausgelöst wird: Sys.ArgumentTypeException: Sys.ArgumentTypeException: Objekt des Typs 'Objekt' kann nicht in den Typ 'Array' konvertiert werden. Parametername: Wert

Ich dachte, dass dieser Fehler ausgelöst wird, da der Antworttyp in beiden Fällen unterschiedlich ist, also habe ich versucht, Typen als json festzulegen, um [object Object] zurückzugeben. Nach dem Zurückgeben des Objekts gibt die Methode immer noch den gleichen Fehler aus. Ich habe ScriptMode = "Release" in meinem ToolkitScriptManager versucht, das sich auf meiner Masterseite nicht in mypage.aspx befindet, aber nichts hat sich geändert.

<cc1:ToolkitScriptManager ScriptMode="Release" ID="ToolkitScriptManager1" AsyncPostBackTimeout="600" EnablePartialRendering="true" EnablePageMethods="true" runat="server"> 
    <Services> 
     <asp:ServiceReference path="MyWebservice.asmx" /> 
    </Services> 
    <Scripts> 
     <asp:ScriptReference path="~/JavaScript/WebKitFix.js" /> 
    </Scripts> 
</cc1:ToolkitScriptManager> 

Die Montage von cc1 ist AjaxControlToolkit und MyPage.aspx ist in Master-Seite enthalten. Irgendeine Idee über was könnte das Problem sein? Wie kann ich es lösen?

+1

Sie bekommen Antwort als ein Objekt '{}' aber Datenquelle erwartet ein Array '[]'. Daher Fehler – Rajesh

+0

@Rajesh Warum Aufruf der gleichen Funktion gibt Antwort auf zwei verschiedene Arten zurück? Wie kann ich es dann reparieren? –

Antwort

0

schließlich nach der Suche entdeckte ich, dass in der zweiten Methode Antwort ist:

{"d":[{"__type":"UploadedFile","Success":"Success","UploadedURL":"Uploaded URL"}]} 

während das, was ich brauche response.d zurückzukehren war:

[{ "__type": "UploadedFile", "Success": "Success", "UploadedURL": "Uploaded URL"}] 

Das ist mein Fehler war , danke

Verwandte Themen