Ajax를 사용하면 웹 애플리케이션의 표시 및 동작을 방해하지 않고 백그라운드에서 데이터 검색이 가능합니다. 이 글에서는 ajax가 json 데이터를 정의되지 않은 것으로 얻는 이유를 주로 소개합니다. ajax에 관심이 있는 친구들은 참고하면 됩니다.
Asynchronous JavaScript and XML(Ajax)은 차세대 웹 사이트를 이끄는 핵심입니다. 웹 2.0 사이트) 기술. Ajax는 웹 애플리케이션의 표시 및 동작을 방해하지 않고 백그라운드에서 데이터 검색을 허용합니다. 클라이언트측 JavaScript가 HTTP를 통해 원격 서버에 연결할 수 있게 해주는 API인 XMLHttpRequest 함수를 사용하여 데이터를 가져옵니다. Ajax는 여러 위치의 콘텐츠를 단일 웹 애플리케이션으로 통합하는 많은 매시업의 원동력이기도 합니다.
일반적으로 서버에서 전송된 json 값을 처리할 때 두 가지 방법으로 처리합니다.
1. 하나는 eval() 함수를 사용하는 것입니다. var dataObj=eval("("+data+")");
//json 객체로 변환(참고: 데이터는 json 데이터입니다) var dataObj=eval("("+data+")");
//转换为json对象(注:data为json数据);
2. 使用Function对象来进行返回解析。var json =(new Function("","return "+data))();
var json =(new Function("","return "+data))();
하지만 오늘 프로젝트를 작업할 때(스트럿츠2를 사용한 프로젝트) 이 두 가지 방법을 사용했습니다. json을 읽으면 출력이 항상 정의되지 않습니다. 인터넷에서 많은 정보를 확인했지만 대부분 설명할 수 없었습니다. 나중에 저자도 이러한 상황에 직면했다는 기사를 찾았습니다. 그의 해결책은 반환 값을 액션에서 json 속성으로 선언하는 것이었습니다. 자신의 프로젝트에서 테스트한 후 실패했고, 해결 방법은 다시 전송하는 것이었습니다. 다음은 제 생각입니다. 백그라운드에서 전송되는 데이터는 json 속성으로 선언되어 있지만 프런트 데스크에 전달되면 실제로는 json 개체가 아닌 문자열로 처리해야 합니다. 백그라운드에 있는 데이터를 json 객체로 변환한 다음 json에서 값을 가져옵니다. 그러나 백그라운드에서 전송된 값이 반드시 표준 json 형식 문자열이 아닐 수도 있습니다. 앞선 두 가지 방법 중 하나를 통해 백그라운드에서 전송된 객체를 변환했지만, 이때 변환된 json 객체는 실제로는 여전히 문자열입니다. 표준 json 문자열을 사용하고 이를 다시 변환하면 json 객체가 됩니다. 다음은 코드의 일부입니다.
result = JSONObject.fromObject(map).toString();//后台代码,将map转成json对象 success : function(result) {//前台返回值代码 var obj = eval("("+result+")"); //var data1 =(new Function("","return "+obj))(); var data1=eval("("+obj+")"); alert(data1.name); }
Summary
위는 편집자가 소개한 정의되지 않은 json 데이터를 ajax가 얻는 이유에 대한 분석입니다. 도움이 되길 바랍니다. 모두에게! !관련 권장 사항:
네이티브 JS가 AJAX 및 JSONP를 구현하는 방법
위 내용은 ajax가 undefound_AJAX 관련 json 데이터를 얻는 이유 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!