데이터 소스에서 데이터를 가져 오기 위해 ajax를 사용하고 있습니다. 개발자 도구는 ajax GET 작업이 올바른 데이터를 리턴하고 있음을 보여 주지만 html 페이지에 표시하기 위해 데이터에 액세스하려는 시도가 작동하지 않습니다. 왜 그런지 알 수 있습니까?
잘 작동하는 다른 응용 프로그램에서 코드를 복사 했으므로 작동한다고 생각했을 것입니다.하지만 어딘가에 오류가 있었지만 어디를 볼 수 없습니다.
AJAX Get 호출에서 반환 된 JSON 코드는 다음과 같습니다.
[{"LINKSCATEGORYNAME":"Client Sites (local)","LINKSCATEGORYID":8},
{"LINKSCATEGORYNAME":"CMS (Local)","LINKSCATEGORYID":41},
{"LINKSCATEGORYNAME":"Music Library and Playlists","LINKSCATEGORYID":24},
{"LINKSCATEGORYNAME":"Our Sites (Local)","LINKSCATEGORYID":7},
{"LINKSCATEGORYNAME":"Radio Prep","LINKSCATEGORYID":18},
{"LINKSCATEGORYNAME":"Stats Reports","LINKSCATEGORYID":17}]
그리고 여기 내 시도가 있습니다
$.getJSON("linksdaoproxy.cfc?method=getCategoriesForMajorCatID&returnformat=json",{"argsLinksMajorCategoryID":selectedID}, function(res,code) {
var newoptions = "";
for(var i=0; i<res.DATA.length; i++) {
newoptions += "<option value=\"" + res.DATA[i] + "\">" + res.DATA[i] + "</option>";
$("#LinksCategoryID").children().end().append(newoptions);
});
콘솔의 오류는 다음과 같습니다.
EditLinkbean.cfm:200 Uncaught TypeError: Cannot read property 'length' of undefined
그리고 참조 된 줄은 for (var ... 함수가있는 줄입니다.
-
답변 # 1
-
답변 # 2
여기에 몇 가지 문제가 있습니다 :
DATA
가 없습니다 JSON의 속성이 AJAX 요청에서 반환되면res
에 액세스 할 수 있습니다 직접.즉, 루프에서 객체의 속성을 검색해야합니다. 와이즈 비즈 그리고
LINKSCATEGORYNAME
객체 자체가 아닌 생성 한 HTML 문자열로 연결합니다.당신의
LINKSCATEGORYID
루프는for
를 닫을 필요가 없습니다와이즈 비즈 통화는 루프 밖으로 나가야합니다.
말한대로 다음을 시도하십시오 :
)
append()
또한
var res = [{ "LINKSCATEGORYNAME": "Client Sites (local)", "LINKSCATEGORYID": 8 }, { "LINKSCATEGORYNAME": "CMS (Local)", "LINKSCATEGORYID": 41 }, { "LINKSCATEGORYNAME": "Music Library and Playlists", "LINKSCATEGORYID": 24 }, { "LINKSCATEGORYNAME": "Our Sites (Local)", "LINKSCATEGORYID": 7 }, { "LINKSCATEGORYNAME": "Radio Prep", "LINKSCATEGORYID": 18 }, { "LINKSCATEGORYNAME": "Stats Reports", "LINKSCATEGORYID": 17 }] //$.getJSON("linksdaoproxy.cfc?method=getCategoriesForMajorCatID&returnformat=json", { "argsLinksMajorCategoryID": selectedID }, function(res, code) { var newoptions = ""; for (var i = 0; i < res.length; i++) { newoptions += '<option value="' + res[i].LINKSCATEGORYID + '">' + res[i].LINKSCATEGORYNAME + '</option>'; } $("#LinksCategoryID").append(newoptions); //});
를 사용할 수 있습니다. 콜백의 로직을 좀 더 간결하게 만드는 템플릿 리터럴. 그러나 후자는 IE에서 지원되지 않습니다.<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <select id="LinksCategoryID"></select>
-
답변 # 3
귀하의 DATA를 와이즈 비즈
는 null이므로 .length의 (DATA-undefined)를 읽을 수 없다는 널 포인터입니다.
(향후 정보를 위해 오해의 소지가 있음) 와이즈 비즈
{RESULT : [yourarray]}와 같은 것을 반환 해보십시오
map()
관련 자료
- sql - mysql 8 피벗 쿼리는 null이 아닌 값을 반환해야합니다
- reactjs - 부모의 자식에서 반환 이외의 변수에 액세스하는 방법은 무엇입니까?
- 다른 속성의보다 구체적인 변형이있는 SQL 쿼리 요소는 어떻게합니까?
- mysql - 직원이 5 명 이상인 부서의 직원 세부 정보를 반환하는 SQL 쿼리
- sql - OFFSET을 추가 할 때 MySQL 쿼리가 행을 반환하지 않습니다
- Snowflake SQL 쿼리의 마지막 문만 R로 반환
- laravel 쿼리는 관계 행의 전체 개수를 반환하지 않습니다
- coldfusion - 필터링 된 항목 대신 전체 반환을 반환하는 쿼리 쿼리
- recursion - 하나의 술어에서 정수보다 큰 오른쪽에서 왼쪽으로 모든 요소를 프롤로그로 반환하는 방법은 무엇입니까?
- 다른 행 데이터를 한 줄로 반환하는 SQL 쿼리
- laravel - SQL 존재 쿼리가 관련 결과를 반환하지 않습니다
- c# - 다른 쿼리 LINQPad의 멤버에 액세스하려면 어떻게해야합니까?
- 모든 그래프 노드 (연결된 구성 요소)를 반환하는 PostgreSQL SQL 쿼리, 쿼리 할 노드 제공
- javascript - 동일한 이름으로 여러 쿼리 매개 변수를 표현하면 배열이 반환되지 않습니다
- Android Studio 41에서 ViewBinding을 사용하여 MainActivitykt의 content_mainxml 요소에 액세스하는 방법은 무엇입니까?
- sql - A의 각 항목에 대해 B와 C에서 val을 반환하는 쿼리를 만듭니다
- sql - 이름에 대한 쿼리 ID (찾을 수없는 경우 이름 삽입 및 ID 반환)
- php - 데이터베이스를 쿼리하고 데이터를 반환하는 함수
- python - 튜플 목록의 고유 요소를 다른 튜플으로 반환하는 방법
- database - mongodb 쿼리 - 주어진 범위에서 배열의 모든 요소를 가진 문서 찾기
이것이 당신이 원하는 것 같아요. 그것은
DATA
에 액세스하지 않습니다 재산 (귀하의 반환에 존재하지 않기 때문에 (배열이기 때문에 존재조차 할 수 없음)