У меня возникли проблемы со строкой кода ASP с участием response.write - PullRequest
1 голос
/ 26 декабря 2011

Хорошо, ребята, я пытаюсь написать строку кода в Classic 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

Когда эта строка обрабатывается, на моем процессоре ASP возникает следующая ошибка:(0x80020009) Возникла исключительная ситуация./ls_internal/newinvoice.asp, строка 325

, строка 325 - строка кода выше.Я знаю, что это что-то простое, но, судя по всему, я не могу этого понять.

Заранее спасибо.

Ответы [ 3 ]

5 голосов
/ 26 декабря 2011

Для одного вы должны использовать двойные кавычки для атрибутов html и одинарные для javascript, так что

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

должно быть

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

Кроме того, вы должны выводить html напрямую, без использования 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>
<%
1 голос
/ 27 декабря 2011

Поскольку вы сейчас написали свою строку кода, она будет переведена в

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

Предполагая, что rs ("id") содержит значение 999. В этой строке кода нет ничего плохого, первое, что я хотел бы сделать, это закомментировать элемент rs ("id") и посмотреть, работает ли страница ок.

Если этого не произойдет, я бы проверил вашу страницу дальше - вы уверены, что ваш SQL-запрос что-то возвращает? Интересно, если ваш rs пуст (не NULL, я имею в виду, что записи не были возвращены). В этом случае вам нужно добавить условие IF NOT rs.eof THEN в ваш код.

Лично я бы следовал приведенной выше рекомендации Gaby aka G.Petrioli, чтобы преобразовать ваши атрибуты HTML в двойные кавычки, а JavaScript - в одинарные.

0 голосов
/ 28 декабря 2011

Поскольку это происходит внутри цикла, я предпочитаю не вырываться из кода 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>.

...