Frage

sein kann, ist es nicht so problematisch für Sie. aber ich versuche erstes Mal mit Json Serialisierung. und auch andere Artikel in stackowerflow lesen.

Ich habe Entity Framework-Datenmodell erstellt. dann durch Verfahren alle Daten von Objekt erhalten:

private uqsEntities _db = new uqsEntities();
//get all data from table sysMainTableColumns where tableName=paramtableName
public List<sysMainTableColumns> getDataAboutMainTable(string tableName)
{
     return (from column in _db.sysMainTableColumns
                    where column.TableName==tableName
                    select column).ToList();

}

meine WebService:

public string getDataAboutMainTable()
{
    penta.DAC.Tables dictTable = new penta.DAC.Tables();
    var result = dictTable.getDataAboutMainTable("1");
    return new JavaScriptSerializer().Serialize(result);
}

und jQuery Ajax-Methode

$('#loadData').click(function() {
            $.ajax({
                type: "POST",
                url: "WS/ConstructorWS.asmx/getDataAboutMainTable",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(msg) {
                    $("#jsonResponse").html(msg);

                    var data = eval("(" + msg + ")");
                    //do something with data
                },
                error: function(msg) {

                }
            });
        });

schlägt fehl (aus fairbug):

missing ] after element list [Break on this error] var data = eval("(" + msg + ")");

Ajax-Response (von Firebug, wenn ich var data = eval("(" + msg + ")") entfernen):

{"d":"[{\"ID\":1,\"TableName\":\"1\",\"Name\":\"d\",\"FullName\":\"f\",\"Type\":\"nvarchar(50)\",\"MeasurementUnit\":\"t         \",\"EntityState\":2,\"EntityKey\":{\"EntitySetName\":\"sysMainTableColumns\",\"EntityContainerName\":\"uqsEntities\",\"EntityKeyValues\":[{\"Key\":\"ID\",\"Value\":1}],\"IsTemporary\":false}},{\"ID\":2,\"TableName\":\"1\",\"Name\":\"e\",\"FullName\":\"e\",\"Type\":\"int\",\"MeasurementUnit\":\"r         \",\"EntityState\":2,\"EntityKey\":{\"EntitySetName\":\"sysMainTableColumns\",\"EntityContainerName\":\"uqsEntities\",\"EntityKeyValues\":[{\"Key\":\"ID\",\"Value\":2}],\"IsTemporary\":false}}]"}

Problem mit Daten , Code nicht da. und ich glaube, ich bin nicht verwenden JavaScriptSerializer (). Serialize () Methode sehr gut.

Bitte, sagen Sie mir, was ein großer Fehler, den ich in C # -Code gemacht?

War es hilfreich?

Lösung

  1. Sie eval nicht brauchen. jQuery bedeutet das für Sie, wenn Sie angeben dataType: "json"
  2. Es ist eine schlechte Idee serialisiert Entitäten direkt als JavaScriptSerializer wird sterben, wenn man einen zirkulären Verweis enthält passiert.
  3. vergessen Sie nicht die d! Das ist von WCF-Diensten zu Arbeit um eine Sicherheitslücke in einigen Browsern eingesetzt, wenn das Root-Objekt ist ein Array.

Andere Tipps

Haben Sie versucht, mit Firebug oder Fiddler Debuggen wie das, was die JSON Inhalt Aussehen zu sehen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top