Функция 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 или запрос никогда не будут переданы одновременно, будет пропущен только один из них.

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

10.12.2008 12:15:10
что со всеми "\"? Это escape-символы в javascript.
StingyJack 10.12.2008 12:47:07
Я не понимаю ваш вопрос. Вы хотите, чтобы мы проверили вашу логику или ваш код?
Jared 10.12.2008 18:06:49
Сначала код, так как он, кажется, не интересен, и я не уверен, нормально ли иметь два параметра, если используется только один ..., даже если мой код работает, я хотел бы знать, является ли он лучшим способ сделать то, что я хочу сделать.
user1253538 11.12.2008 10:14:34
3 ОТВЕТА
РЕШЕНИЕ

Похоже, у вас могут быть ошибки в 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, если вы еще этого не сделали. Отличный инструмент!

1
10.12.2008 14:57:25
Я проверил JSLint здесь jslint.com, который дал в основном пропущенные точки с запятой и разрывы строк . При просмотре страницы я не получаю ошибок. Моя логика в порядке, если используется только один из p или запроса?
user1253538 10.12.2008 15:08:26
Ну, ваш URL должен быть объявлен перед оператором if, чтобы, когда вы используете его в javascript ниже, он находил один или другой. Также один из них - это $ url, а другой не имеет '=', например url = "get_auction.php? Blah";
Kieveli 10.12.2008 20:14:15

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

onclick="update(\'Layer3\',\'2\',\''.$pk.'\',\'0\',)">
1
10.12.2008 12:50:06
Правда ли, что моя логика - верный способ сделать это? Наличие функции, принимающей два параметра, если используется только один из них?
user1253538 10.12.2008 13:03:49

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

child1.document.write(<?php echo json_encode($row2["ARTICLE_DESC"]); ?>);
0
10.12.2008 14:39:19
Однако это не является причиной этой проблемы, проблема в том, что get_records никогда не вызывается в функции обновления, а не в makewindows.
user1253538 10.12.2008 16:22:10