Сначала я бы добавил "var xmlhttp = null;"в верхней части вашей функции - которая будет локально ограничивать переменную, а не делать ее глобальной по природе - как указывает @David Dorward.Это в конечном итоге назначит обработчик ответа на запрос ajax во второй объявленной функции (которая когда-либо оказывается второй) в качестве обработчика ответа на оба запроса ajax, и вы получите описанное вами поведение.
Если вы по-прежнему получаете один и тот же текст в обоих div, то я подозреваю, что обе функции javascript вызывают функцию post_op_stat_disp.php вместо функции мнения, вызывающей то, что я бы назвал post_opinion_disp.php, и в результате она возвращает один и тот жеданные для каждого дел.Или (что еще более маловероятно), что и post_opinion_disp, и post_op_stat_disp возвращают один и тот же результат.
Поскольку эта проблема на самом деле не является основной для AJAX, а скорее всего является проблемой кодирования - я бы предложил вручную перейти на http://[server]/post_op_stat_disp.php?ajaxid=testи ваш другой URL-адрес и посмотрите, что должно быть заполнено в обоих div.
Тогда я настоятельно рекомендую вам абстрагировать ваш ajax-код в какую-то обычную функцию, чтобы не дублировать код статуса http и логику создания xmlhttp.И хотя это может не помочь вам решить эту конкретную проблему, оно уменьшило бы размер вашего кода до чего-то такого, если бы вы следовали советам @Jared Farrish и использовали jquery:
function op_status(op, pid) {
if (!op) return $('#opstatus' + pid).html("");
$.get('post_op_status_disp.php?ajaxid=' + pid, function(r) {
$('#opstatus' + pid).html(r);
});
}
Мои деньги на ключе varслово, которое гарантирует, что вы получите два разных объекта xmlhttp вместо одного глобального объекта.
Но, как большинство из них уже прокомментировали, вы можете опубликовать сгенерированные результаты, чтобы помочь нам помочь вам отследить этот дефект.
Спасибо, дайте нам знать, как это получается!