0

ビューに JSON を返したい Web サービスへの ajax 呼び出しがあります。ただし、現在、呼び出しの結果を警告すると、「オブジェクト ドキュメント」が表示されます。コンテンツ タイプを変更しようとしましたが、ダイスはありませんでした。現在の状態での ajax 呼び出しは次のとおりです。

$.ajax({
    type: "GET",
    url: "services/offerService.asmx/getUploadedDocs",
    contentType: 'text/html',
    data: {offerID : offerId},
    success: function(result) {
        $.each(result, function(index) {
        alert(result.toString());
        $(element).closest('ul.uploadedDocs').append('<li id="uploadedDoc-'+(index+"") + '" class = "uploadedDocument"><span id="uploadedDocTitle">Title: '+ result["title"] + '</span><span id="uploadedDocUploadedBy>Uploaded By: ' + result["uploadedBy"] + '</span></li>');
        });                     
    }
});

Web メソッドは次のとおりです。

[WebMethod]
public object getUploadedDocs(string offerID)
{
    string sql = "SELECT * FROM [dbo].[uploaded_documents] WHERE primary_offer_id = @offerId";
    IList<UploadedDocument> uploadedDocs = new List<UploadedDocument>();
    using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["production"].ToString()))
    {
        SqlCommand cmd = new SqlCommand(sql, conn);
        cmd.Parameters.Add("@offerId", SqlDbType.Int);
        cmd.Parameters["@offerId"].Value = offerID;
        DataTable dt = new DataTable();
        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
        adapter.Fill(dt);
        adapter.Dispose();
        uploadedDocs = dt.ToList<UploadedDocument>();
    }

    StringBuilder json = new StringBuilder();
    json.Append("{");
    int count = 1;
    foreach (UploadedDocument doc in uploadedDocs)
    {
        json.Append("{doc"+count.ToString()+":"+"{\"title\": " + doc.docTitle + ", \"uploadedBy\": " + doc.uploadedBy + ", \"uploadDate\": " + doc.uploadDate.ToLongDateString() + "},");
    }
    if(json.ToString().Contains(","))
        json = json.Remove(json.ToString().LastIndexOf(','), 1);
    json.Append("}");
    return json.ToString();
}

おそらくとして送り返すこともできますobject()が、文字列のままにして、JSON として解析してもらいたいと思います。何か案は?

4

1 に答える 1

0

まず、ajax 呼び出しの contentType を「json」に変更する必要があります。

それから電話してみてください

alert(JSON.stringify(result));

そしてそれがあなたに与えるものを見てください。json オブジェクトを適切に構築していると仮定すると、動作するはずです。また、firebugをダウンロードして、何が返されるかを確認してください。

編集:

UploadDocs オブジェクトがどのように見えるかわかりませんが、やってみてください

return Json(uploadedDocs);

あなたの方法で。

JK あなたは WebForms (?) を使用しているので、Json オブジェクトに解析するには、こちらを参照してください

于 2012-11-02T15:34:20.423 に答える