2015-05-20 2 views
1

Проблема

Я пытаюсь создать страницу, которая обновляет конкретное поле записей в таблице, когда флажок щелкнули (в идеале без обновления страницы). Я думал, что jQuery/AJAX будет работать для меня.
Видимо, нет.Yii2 JQuery не работает в IE11

Я боролся с этим на некоторое время, поэтому я решил масштабировать его и действительно упростить, чтобы выяснить, что не работает. Обновление таблицы в порядке (из Chrome), а не обновление - нет. И ничто из этого не работает из IE11.

В настоящее время он размещен на моей локальной машине, поэтому часть меня задается вопросом, связано ли это с этим, однако jQuery отлично работает на других сайтах, которые я размещал одинаково.

Действие Yii2 Контроллер:

public function actionTest() { 
    return 'This is just a static test'; 
} 

(очень основной) PHP страницу: Это источник после того, как страница была оказана

<script src="/assets/ddb27309/jquery.js"></script> 
<script src="/assets/eeb0e590/yii.js"></script> 

<div id="loadToMe"> </div> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#loadToMe').load('/mycontroller/testing'); 
    }); 
</script> 

Теперь, как обычно, я ожидаю, что текущий пустой div будет заполнен d со строкой This is just a static test - приятно и легко.

Однако.

Хром & FireFox: Переадресация на {mysite}/mycontroller/тестирование и отображение данного текста.

IE 11: дает мне следующее сообщение об ошибке, но ничего не происходит:

XMLHttpRequest: Network Error 0x2f76, Could not complete the operation due to error 00002f76. 

Такое поведение является идентичным для обоих браузеров, когда я использую $.get, $.post и $.ajax (с их различными различия синтаксических) за одним исключением - IE11 дает другое сообщение об ошибке для POST.

XMLHttpRequest: Network Error 0x800c0008, The download of the specified resource has failed. 

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

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" /> 

<meta http-equiv="X-UA-Compatible" content="IE=edge;chrome=1" /> 

AddDefaultCharset utf-8 

И с помощью вкладки сети из инструментов разработчика IE у меня есть это для POST и GET соответственно.

Protocol Method Result  Type  Received Taken Initiator  Wait Start Request Response Cache read Gap‎‎ 
HTTP  POST 302   text/html 464 B  47 ms XMLHttpRequest 0  16  0  31   0   2902 
HTTP    (Aborted) text/html 506 B  < 1 ms XMLHttpRequest 2902 0  0  0   0   47 

Связанные JS файлы являются те, которые пришли из Yii2 (и минимальный требуемый для того, чтобы $.load работать в Chrome) - я не прикоснулся к ним каким-либо образом.

JQuery версия v2.1.3
Yii2 версия v2.0.3

+0

Я не вижу упоминания о том, что вы включили '\ yii \ web \ JqueryAsset :: register()' в виде где-нибудь. Можем ли мы считать, что это было сделано правильно? – Blizz

+0

Файлы javascript и jquery добавлены в полный файл с пакетами активов. На тестовой странице, которую я привел выше, они жестко закодированы. Оба способа работы в Chrome и FF, но не в IE. Ответит ли это на ваш вопрос? – AmandaL

ответ

0

Так получается, что у меня есть localeUrls и это была проблема!

Мои URLs предваряются текущего языка (т.е. myurl.com/ ан/контроллер/действие)

Когда я пытался загрузить /mycontroller/testing оказывается он был перенаправлен на UrlManager в /en/mycontroller/testing, следовательно, перенаправление и не загрузка (по крайней мере, это то, что я понимаю из этого - я относительно новичок в Yii2)

Если кто-нибудь может указать мне куда-нибудь, что объяснит это более подробно, я был бы благодарен, но по крайней мере сейчас я могу взломать мой проект.

Благодаря

-1

我 重载 了 下 Response 类 (я перегружен следующий класс Response)

class Response extends \yii\web\Response{ 
    public function redirect($url, $statusCode = 302, $checkAjax = true) 
    { 
    if ($checkAjax && (Yii::$app->getRequest()->getIsPjax() || Yii::$app->getRequest()->getIsAjax())) 
    { 
     $statusCode = 200; 
    } 
    return parent::redirect($url, $statusCode, $checkAjax); 
    } 
} 
+1

Пожалуйста, напишите на английском языке. –

1

IE11 возврата Ошибка:

XMLHttpRequest: Network Error 0x800c0008, The download of the specified resource has failed. 

Мое решение: Yii2 контроллер SET:

use yii\helpers\Json; 

public function actionTest() { 
    $out['message'] = 'This is just a static test'; 
    echo Json::encode($out); 
    \Yii::$app->end(); 
} 

ИЛИ

public function actionTest() { 
     echo 'This is just a static test'; 
     \Yii::$app->end(); 
    } 

Удалить из контроллера (PHP-код) всех переадресаций и возвращается. ($ this-> redirect ("..."))

Смежные вопросы