2011-12-26 3 views
1

여러분, 쿼리 문자열이있는 다른 페이지로 이동하는 버튼에 대해 Classic ASP에 한 줄의 코드를 작성하려고합니다. 그러나 나는이 일을하는 데 어려움을 겪고있다.response.write와 관련된 ASP 코드 줄에 문제가 있습니다.

이 줄 내 ASP 프로세서에 다음과 같은 오류가 처리
response.write "<td valign='top'><input type='button' name='cmdUpdateInfo' value='Update Info' tabindex='7' onclick='window.location=updatecustomer.asp?UpdateID=""'" & rs("ID") & "'""/></td>" & vbCrLf 

: 오류 유형 : (0x80020009) 예외가 발생

여기에 지금까지 내 코드입니다. /ls_internal/newinvoice.asp, 줄 325

325 줄은 위의 코드 줄입니다. 나는 이것이 단순한 것임을 알고 있지만, 내 인생에서 나는 그것을 알아낼 수 없다.

미리 감사드립니다.

+0

따라서 최소한의 테스트 케이스로 나누십시오. 어떤 부분이 잘못 되었습니까? –

+0

이 코드를 사용하여 실제로 해결했지만 모양이 좋지 않지만 작동합니다. 'code' response.write " "& vbCrLf – Russell

답변

1

을 할 수는 RS 가정하면

<td valign='top'><input type='button' name='cmdUpdateInfo' value='Update Info' 
tabindex='7' onclick='window.location=updatecustomer.asp?UpdateID="'999'"/></td> 

로 번역하는 것입니다 ("id")에는 999라는 값이 들어 있습니다. 코드 줄에는 아무 것도 없지만 먼저 rs ("id") 요소를 주석 처리하고 페이지가 정상적으로 실행되는지 확인하려고합니다.

그렇다면 귀하의 페이지를 더 자세히 확인하겠습니까 - SQL 쿼리가 아무것도 반환하지 않았습니까? 귀하의 rs가 비어 있는지 (NULL 값이 아닌, 나는 아무런 레코드도 반환되지 않았다는 것입니다) 어떤 경우에는 코드에 IF NOT rs.eof THEN 조건을 추가해야합니다.

개인적으로 나는 위의 Gaby 일명 G.Petrioli의 추천을 따라 HTML 속성을 큰 따옴표로 변환하고 JavaScript를 단 하나로 변환합니다.

+0

UpdateID = " '999'"를 쿼리 문자열에 전달하십시오 (아마도 UpdateID = 999를 원할 것입니다) – Dan

+0

해결 방법에 대한 위의 내 의견을 읽으십시오. 어쨌든 도움을 주셔서 감사합니다. – Russell

5

그래서

onclick=window.location=updatecustomer.asp?UpdateID=""'" & rs("ID") & "'"" /> 

이보다

onclick=""window.location='updatecustomer.asp?UpdateID=" & rs("ID") & "'"" /> 

다른해야 하나를 들어 당신은 HTML의 속성에 대한 따옴표를 사용해야하며, 자바 스크립트에 대한 하나의 당신이해야 ASP를하지 않고 직접 출력 HTML, 그것을 인쇄 할 문자열로 처리하십시오.

내 말은 현재 코드의 당신의 라인을 작성한으로 대신 전체 response.write ..... 라인의 당신이

%><td valign="top"><input type="button" name="cmdUpdateInfo" value="Update Info" tabindex="7" onclick="window.location='updatecustomer.asp?UpdateID=<%=rs("ID")%>'"/></td> 
<% 
+0

+1 끔찍한 Reponse.Write 코드보다 훨씬 나은 최종 해결책. HTML/XML 속성 값을 자바 스크립트 문자열 리터럴에 넣을 수있게하면 더 적은 버그를 추적 할 수 있습니다.이 답변의 최종 접근 방식은 목표를 달성하고 읽기가 훨씬 쉽습니다. – AnthonyWJones

0

이 내가 ASP 코드에서 벗어나 대신 "템플릿"의 종류를 사용하지 선호하는 루프 내부에 와서 :

Dim cellTemplate 
cellTemplate = "<td valign=""top""><button type=""button"" name=""cmdUpdateInfo"" tabindex=""7"" onclick=""window.location = 'updatecustomer.asp?UpdateID=$id';"">Update Info</button></td>" 

Do Until rs.EOF 
    response.write Replace(cellTemplate, "$id", rs("ID")) & vbCrLf 
    rs.MoveNext 
Loop 

이 더 우아한 스파게티 코드를 작성하지 않습니다, 플러스 일반 버튼을 사용하고 <input> 요소를 사용하지 않는 것이 좋습니다.

관련 문제