Javascript-код, работающий в html-файле, не работает, когда воспринимается как строка в C ++ - PullRequest
0 голосов
/ 28 октября 2010

У меня есть HTML-файл с кодом JavaScript, содержимое файла, как показано ниже: Я попробовал этот код в Safari, и он работал нормально. Но когда я попробовал это на Firefox, он не работал. Кто-нибудь может подсказать, как заставить его работать на firefox.

<html><head></head><body><button type="button" onClick="handleButtonClick();">undo</button> <button type="button">redo</button><select><option value="V1">V1</option><option value="V2">V2</option><option value="V3">V3</option><option value="V4">V4</option><option value="V5">V5</option></select>  <script type="text/javascript">function handleButtonClick(){var xmlHttp, handleRequestStateChange; handleRequestStateChange = function() {if (xmlHttp.readyState==4 && xmlHttp.status==200) { var substring=xmlHttp.responseText; alert(substring); } }      
 xmlHttp = new XMLHttpRequest();xmlHttp.open("GET", "http://csce.unl.edu:8080/test/index.jsp?id=c6c684d9cc99476a7e7e853d77540ceb", true);xmlHttp.onreadystatechange = handleRequestStateChange; xmlHttp.send(null);}</script>
</body>
</html>

если вы скопируете приведенный выше код в вашу систему, нажав на кнопку отмены, вы получите содержимое но тот же код, который я вставляю через C ++ в виде строки, она не работает ... что я понял странно в приведенном выше коде, что требуется ввод (клавиша возврата) перед нажатием xmlHttp = new XMLHttpRequest (); В противном случае это не работает и для HTML-страницы. То же самое я реализовал в коде C ++, и код не работает. Код как под:

std::string login="<button type=\"button\" onClick=\"handleButtonClick();\">undo</button> <button type=\"button\">redo</button><     select><option value=\"V1\">V1</option><option value=\"V2\">V2</option><option value=\"V3\">V3</option><option value=\"V4\">V4</option><option value=\"V     5\">V5</option></select>  ";

std::string jscriptstring1="<script type=\"text/javascript\">function handleButtonClick(){var xmlHttp, handleRequestStateChange; handleRequestStateChang     e = function() {if (xmlHttp.readyState==4 && xmlHttp.status==200) { var substring=xmlHttp.responseText; alert(substring); } }";

std::string jscriptstring2="xmlHttp = new XMLHttpRequest();xmlHttp.open(\"GET\", \"http://csce.unl.edu:8080/test/index.jsp?id=c6c684d9cc99476a7e7e853d77     540ceb\", true);xmlHttp.onreadystatechange = handleRequestStateChange; xmlHttp.send(null);}</script>";

std::string ret="\n";

login+=jscriptstring1;
login+=ret;
login+=jscriptstring2;

Пожалуйста, кто-нибудь может подсказать, что идет не так?

1 Ответ

1 голос
/ 28 октября 2010

Прежде всего, если вы собираетесь создать объект XMLHttp для запроса сервера в разных браузерах, убедитесь, что он действителен в используемом вами браузере (разные браузеры по-разному ссылаются на объект XMLHttp), обычно этот объект создается следующим образом:

function getRequestObject(){
    var xmlHttp;
    if (window.ActiveXObject) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }
    else if (window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); }
    return xmlHttp;
}

С другой стороны, в зависимости от вашего браузера вы можете отладить свой скрипт, чтобы увидеть, какой код ошибки возвращает браузер (если есть).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...