2014-01-30 3 views
5

У меня есть $ ("ClickButton"). Нажмите (функция(), который загружает страницы с помощью $ .ajax и возвращает результат в DIV. This отлично работает в Chrome, FireFox и Safari, но не IE11.

$.ajax({ 
    url: "go.php?ab=1", 
     success: function(data, textStatus, xhr) { 
     $("#res").html(data);  
    } 
}); 

в качестве быстрого теста я попробовал следующее и снова работает в Chrome, FireFox и Safari, но не IE11.

$.get('go.php?ab=1', function(jqXHR, textStatus, errorThrown) 
{ alert(jqXHR); }); 

возвращаемая дата - это текст и либо OK или ОШИБКА. Go.php запускает несколько сценариев командной строки и зависит от того, какие переданные переменные обрабатываются при запуске.

Все это прекрасно, и он работает очень хорошо в трех браузерах, но не в IE11.

Когда страница загружается в IE, это похоже на работу, она запускает сценарий go и возвращает результат. Но любой последующий момент возврата клика и страница go.php не вызываются. Результаты отображаются, но они, по-видимому, являются первыми процессами, возвращающими результаты. Это как если бы результат и процесс были кэшированы.

Любые идеи, как сделать эту работу в IE так же, как в других?

+0

Создать скрипку – haim770

+1

'url:" go.php? ab = 1 ",' вы пропустили добавить '' ', может быть typo –

+0

Спасибо, что это была опечатка. Как я уже сказал, она отлично работает во всем баре IE 11. – JeffVader

ответ

3

Это как если результат и процесс был в кэше.

Это возможно. Если вы отправляете несколько запросов GET на один и тот же URL-адрес, ваш браузер может кэшировать результат.Если вы хотите проверить это, вы можете нажать кнопку, очистить кеш без перезагрузки страницы и снова нажать кнопку, чтобы увидеть, работает ли это на этот раз.

Чтобы предотвратить кэширование запросов GET вы можете добавить

cache: false 

к вашим $ .ajax опций для каждого запроса, или вы можете отключить его для всех запросов с помощью

$.ajaxSetup({ cache: false }); 
+0

Отключение кеша не помогло. – JeffVader

+0

Можете ли вы опубликовать обновленный код? Я смог воссоздать вашу ситуацию, когда он работал в Firefox, но не изменился после первого щелчка в Internet Explorer 11. Однако добавление кеша: false исправил его для меня. Кроме того, до этого я смог проверить, что кэш был проблемой, очистив кеш между кликами. – Avalanche

+0

Привет. На данный момент я не нахожусь на своем ПК. Я добавил '$ .ajaxSetup ({cache: false});' просто внутри функции щелчка. Одна вещь, которую я заметил, - это один из моих сценариев запуска, перезапускающий Apache. Как только это произошло, ни одна из других кнопок не работает, пока я не перезагружу страницу. Опять же, это только в IE, в других они все работают нормально. – JeffVader

1

Я не знаю, была ли у нас одна и та же проблема, но только раньше я пытался сделать get the responce data от go.php и добавить его в div.

Мой код выглядит следующим образом.

OnClick:

<script type="text/javascript"> 
    function gimmeData(){ 

        var url = 'go.php'; 
        $.ajax({ 
        type: "GET", 
        url: url, 
        data:{'something':'1'}, 
        success:function(results) 
        { 
         $('#add_data').html(results); 
        } 
        }); 
       } 
</script> 

это даст go.php?something=1 URL.

HTML:

<input type="button" onclick="gimmeData();" value="clickme!" /> 
<div id="add_data"></div> 

кнопку мыши

$('a').on('click', function(){ 
    var a = $(this).data('first'); 
    var b = $(this).data('second'); 
    alert(a + ":" + b); 
}); 

HTML:

<a id="button" href="#" data-first="something" data-second="something2" onclick="click();">click me</a> 

используя data() функцию. см http://api.jquery.com/data/

или вы можете сделать $(this).attr("data-value"), чтобы получить значение data-attribute

JSFiddle sample.

+0

В качестве базового теста это сработало. Я хотел бы попробовать некоторые дополнительные тесты. В настоящее время мои кнопки имеют значение, заданное как 'data-value =" go.php? Ab = 1 "', тогда я использую '$ (this) .attr (" data-value ")' для получения правильного URL-адреса. Я изменил это так: data-value = "{'ab': '1'}" и добавил '$ (this) .attr (" data-value ")' to 'data:' Но это не так Работа. В любом случае я могу передать эти долины? – JeffVader

+1

вы можете сделать, это сделать 2 атрибута данных. один для другого значения и один для другого и хранить его в своих соответствующих переменных и использовать them.mememe обновить мой ответ. – rockStar