2
$.ajax({
        type: 'POST',
        url: "/api/student",  
        data:'{"x":3,"y":2}',
        dataType: "json",
        complete: function (r, s) {
            debugger;
        },

        success: function(response){
            debugger;
        },

        contentType: "application/json" // !!!!!!!!!!!! The reason of problem. I could see Json on firebug. It was false-positive for my code !

    });

Firebugを介してストリームをトレースしました。FirebugはJSONオブジェクトを認識して表示しました。

このコードはRestServiceBaseのOnPostメソッドにアクセスしましたが、モデルのバインドは機能しませんでした。プロパティ名は、JsonオブジェクトとC#クラスで完全に同じである必要がありますか?

それとも私は何かが足りないのですか?(はい、何かが足りません!)

PS:URLを「/ api / student / json / asynconeway」に変更したのですが、404エラーが発生しました

4

3 に答える 3

4

ServiceStack 、JSON POST(およびx-www-form-urlencodedを含むサポートされているContent-Typeのいずれか)をモデルバインドします。

これを行うServiceStack.Examplesには多くの例があります。

このコードはRestServiceBaseのOnPostメソッドにアクセスしましたが、モデルのバインドは機能しませんでした。

バインドしようとしているDTOが表示されていません。しかし、このJSON

{"x":3,"y":2}

一致するDTOにマップされます。例:

public class Student { 
    public int X { get; set; }
    public int Y { get; set; }
}

プロパティ名は、JsonオブジェクトとC#クラスで完全に同じである必要がありますか?

これらはコースの名前と一致する必要がありますが、大文字と小文字は区別されません。上記を参照してください。

PS:URLを「/ api / student / json / asynconeway」に変更したのですが、404エラーが発生しました

これは間違っています。自動定義済みルートを使用しようとしている場合、正しいURLは次のとおりです。

/api/json/asynconeway/student

リクエストDTOがと呼ばれると仮定しますStudent

于 2012-07-26T22:43:11.797 に答える
0

ここに私のいくつかのコードがあります:

            $.ajax({
                type: "POST",
                url: "/artist/delete",
                data: { id: itemId },
                success: function () {
                    $("div#" + itemId).fadeOut(function () { $(this).remove(); });
                }
            });

編集:申し訳ありませんが、私はあなたがそこに望んでいたものを間違えたので、私はあなたに質問をします、なぜあなたはあなたがこのような機能を作ることができるサーバーにjsonを送るのですか?

[HttpPost]
        public ActionResult Delete(int id)
        {
            var artist = _db.Artists.Where(x => x.ID == id).SingleOrDefault();
            if (artist == null)
            {
                return Content("false");
            }
            else
            {
                _db.Artists.DeleteOnSubmit(artist);
                _db.SubmitChanges();
                return RedirectToAction("Post");
            }
        }

EDIT2:ここに構文エラーがありますdata:'{"x":3,"y":2)}',
EDIT3:別の構文エラー

        }
        }
    });

コードの最後。

于 2012-07-26T22:00:27.217 に答える
0

追加する必要があります

dataType:ajaxリクエストへの "application / json"プロパティ!

于 2012-07-26T23:27:45.643 に答える