Функция JavaScript не отвечает

У меня есть следующий код, который является основной частью моего небольшого приложения AJAX. Я не получаю ошибок, просто ничего не происходит. Я предполагаю, что есть более эффективный способ делать то, что я пытаюсь сделать.

Вот код:

var xmlHttp

var layername

function update(layer, part, pk, query)

{

if (part= = "1")

{

$url  "get_auction.php?cmd=GetAuctionData&pk = "+pk+"&sid = "+Math.random()

}

else if (part= = "2")

{

var url  "get_records.php?cmd=GetRecordSet&query = "+query+"&sid = "+Math.random()

}

xmlHttp=GetXmlHttpObject()

if (xmlHttp==null)

{

alert("Your browser is not supported?")

}



xmlHttp.onreadystatechange = function() {

        if (xmlHttp.readyState==4 || xmlHttp.readyState= = "complete") {

            document.getElementById(layer).innerHTML=xmlHttp.responseText

        } else if (xmlHttp.readyState==1 || xmlHttp.readyState= = "loading") {

            document.getElementById(layer).innerHTML = "loading"

        }

    };

xmlHttp.open("GET",url,true)

xmlHttp.send(null)

}

function GetXmlHttpObject()

{

    var xmlHttp=null;

    try

    {

        xmlHttp=new XMLHttpRequest();

    }catch (e)

    {



        try

        {

                xmlHttp =new ActiveXObject("Microsoft.XMLHTTP");

        } 

        catch (e) {}



    }

return xmlHttp;

}

function makewindows(){

child1 = window.open ("about:blank");

child1.document.write(json_encode(<?php echo $row2["ARTICLE_DESC"]; ?>));

child1.document.close(); 

}

и пример того, как я вызываю функцию из php

onclick = "update(\'Layer3\',\'2\','.$pk.'\',\'0\',)">'

pk или запрос никогда не будут переданы одновременно, будет передан только один из них.

edit: Мне также интересно, имеет ли смысл для функции makewindows принимать параметр или оставаться как есть. Есть ли преимущества и недостатки у каждого подхода?

что со всеми "\"? Это escape-символы в javascript.

StingyJack 10.12.2008 15:47

Я не понимаю твой вопрос. Вы хотите, чтобы мы проверили вашу логику или ваш код?

Jared 10.12.2008 21:06

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

user1253538 11.12.2008 13:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
196
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Я бы проверил HTML, который генерирует PHP. Предполагая, что $ pk - это строка, похоже, что вам не хватает вступительной цитаты. Попробуй это:

onclick = "update(\'Layer3\',\'2\',\''.$pk.'\',\'0\',)">

Но верна ли моя логика? Если функция принимает два параметра, если используется только один из них?

user1253538 10.12.2008 16:03

json_encode - это функция PHP, и поэтому вам нужно изменить эту конкретную строку следующим образом:

child1.document.write(<?php echo json_encode($row2["ARTICLE_DESC"]); ?>);

Это не является причиной этой проблемы, однако проблема в том, что get_records никогда не вызывается в функции обновления, а не в makewindows.

user1253538 10.12.2008 19:22
Ответ принят как подходящий

Похоже, у вас могут быть ошибки javascript:

if (part= = "1")
{
   $url  "get_auction.php?cmd=GetAuctionData&pk = "+pk+"&sid = "+Math.random()
}
else if (part= = "2")
{
   var url  "get_records.php?cmd=GetRecordSet&query = "+query+"&sid = "+Math.random()
}

Используйте Firefox и откройте консоль javascript, чтобы получить ошибки javascript, затем попробуйте исправить строки, на которые он жалуется.

Javascript перестанет работать, как только обнаружит ошибку.

Кроме того, проверьте Firebug, если вы еще этого не сделали. Отличный инструмент!

Я проверил JSLint здесь jslint.com, который выдает в основном пропущенные точки с запятой и ошибки переноса строк. При просмотре страницы ошибок нет. Можно ли использовать мою логику таким образом, если когда-либо использовался только один из p или query?

user1253538 10.12.2008 18:08

Что ж, ваш URL-адрес должен быть объявлен перед оператором if, чтобы при его использовании в javascript он находил то или другое. Также один - это Perl $ url, а другой не имеет символа '=', например url = "get_auction.php? Blah";

Kieveli 10.12.2008 23:14

Другие вопросы по теме