2016-03-31 13 views
0

私は、Typescript/angular2を使用してhttp.post経由でオブジェクトをWebサービスに渡すのに苦労しています。angular2 http POSTデータオブジェクトの問題

私が試した経路は以下の通りですが、いずれも機能しません。 (TS中)

マイコンポーネント:

export class DataFormComponent { 

    newPerson: any; 
    errorMessage: any; 

    constructor(private _appServices: AppServices){} 

    data:any = {"Login":"jsmith","TKID":"4000","FirstName":"john","LastName":"smith","FullName":"Smith, John","Email":"[email protected]","ShortTitle":"Library Specialist","Extension":"5000","JobTitle":"Librarian","OfficeFloor":"33","Department":"Library","DepartmentCode":"LIB"}; 

    saveForm(){ 
     this._appServices.saveData(this.data) 
      .subscribe(
       (result: any) => { 
        this.newPerson = result; 
       }, (error) => { 
        // show error message 
        this.errorMessage = <any>error; 
       } 
      ); 
    } 
} 

私の活字体のサービス:

saveData(data: any): Observable<any> { 
     // let v.s. var, let(block scope) has smaller scope than var(function scope). 

     let _url = 'webservices/wsServices.asmx/SaveData'; 

     let body = JSON.stringify({data}); 
     alert(body); 
     let headers = new Headers({ 'Content-Type': 'application/json' }); 
     let options = new RequestOptions({ headers: headers }); 

     return this.http.post(_url, body, options) 
      .map(response => <any> response.json()) 
      .catch(this.handleError); 

    } 

ネットマイウェブサービス:()

[WebMethod] 
     [ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)] 
     public void SaveData(string dataobject) 
     { 
      ... 
     } 

私は常に取得エラー。:

Response {_body: "{"Message":"No parameterless constructor defined f…,"ExceptionType":"System.MissingMethodException"}", status: 500, statusText: "Ok",... 

私は古いトリックを使用しようとしました。 Angular1では、$ .paramとJSON.stringifyを使用してデータオブジェクトを変換し、それをWebサービスに渡しています。

this.saveData = function (oData) { 

     var input = $.param({ myDataParam: JSON.stringify(oData) }); 

     return $http({ 
       method: 'POST', 
       url: 'wsServices/wsProcess.asmx/SaveData', 
       data: input, 
       headers: { 'Content-Type': 'application/x-www-form-urlencoded' } 
      }); 
    }; 

Angular2/Typescriptに使用できる同様の方法/サービスがあるかどうかは疑問です。

+0

エラーはバックエンドコードから来ています。このエラーは、パラメータのないコンストラクタが欠落しているために投稿したjsonを逆シリアル化できません。それは角度とはあまり関係がありません。エラー500は「内部サーバーエラー」を意味します。 –

+0

ありがとうございます。私はクライアントが私のWebサービスにぶつからなかったと思う。私はサーバーのサイトコード(Webサービス)に停止点を置いていますが、ハイライトはありません。 –

+1

フレームワークがJSONを逆シリアル化することさえできないので、たぶんヒットしませんでした。スタックトレースが必要です。それを読んで。 JSONに対応するクラスの1つに、パラメータのないコンストラクタがありません。だからそれを修正してください。エラーメッセージを無視しないでください。 –

答えて

0

JB Nizetに感謝します。問題は私のWebサービスから来たようです。

パラメータタイプをstringからobjectに変更しました。その後、それは動作を開始します!

public void SaveData(object dataobject)