문제

아마도 당신에게 그렇게 문제가되지 않을 수도 있습니다. 그러나 나는 JSON 직렬화로 처음 노력하고 있습니다. 또한 StackowerFlow의 다른 기사를 읽으십시오.

엔티티 프레임 워크 데이터 모델을 만들었습니다. 그런 다음 메소드별로 객체에서 모든 데이터를 가져옵니다.

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();

}

내 웹 서비스 :

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

및 jQuery ajax 방법

$('#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) {

                }
            });
        });

실패 (Fairbug에서) :

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

Ajax 응답 (Firebug에 의해 제거하면 var data = eval("(" + msg + ")")):

{"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}}]"}

문제 데이터, 코드가 실패합니다. 그리고 나는 내가 사용하지 않는다고 생각합니다 javascriptserializer (). serialize () 방법은 아주 잘합니다.

C# 코드에서 저지른 실수는 무엇입니까?

도움이 되었습니까?

해결책

  1. 당신은 필요하지 않습니다 eval. jQuery는 지정할 때 그렇게합니다 dataType: "json"
  2. 엔티티를 직접 직렬화하는 것은 나쁜 생각입니다. JavaScriptSerializer 원형 기준이 포함되어 있으면 죽을 것입니다.
  3. 잊지 마세요 d! 루트 객체가 배열 일 때 일부 브라우저의 보안 구멍을 해결하기 위해 WCF 서비스에 의해 삽입됩니다.

다른 팁

JSON 컨텐츠가 어떻게 보이는지 확인하기 위해 Firebug 또는 Fiddler로 디버깅을 시도해 보셨습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top