2012-01-27 17 views
7

Jestem zaskoczony problemem, który mam z wywołaniem Ajax HTTPS tylko w IE. Wydaje mi się, że IE generuje żądanie crossdomain, ale nie jestem. Poniższy kod jest nazywany ze strony https://mydomain/customer_profile.php:Problemy z żądaniem Ajaxa HTTPS w IE (nie między domenami)

$.ajax({ 
    type: 'post', 
    url: 'https://mydomain/ajax/retrieve_transaction_details.php', 
    data: /* my data is here */, 
    success: function(response){ 
     // do something with the response 
    }, 
    error: function (xhr, ajaxOptions, thrownError){ 
     alert(xhr.status); 
     alert(thrownError); 
    } 
}); 

Wniosek ten działa dobrze w każdej przeglądarce z wyjątkiem IE. W IE funkcja błędu zwraca "Błąd: Odmowa dostępu". Tak jak powiedziałem, jestem całkowicie zdumiony tym, więc każdy wgląd lub pomysły będą wspaniałe.

+1

Wypróbuj bez 'https: // mydomain'. Tak więc spróbuj z URLem jako "/ajax/retrieve_transaction_details.php". –

+0

Próbowałem tego. Bez względu na przyczynę, jeśli nie podam bezwzględnej ścieżki, inne przeglądarki próbują przesłać żądanie przez HTTP, a tym samym również je rozbić. –

+0

Być może dodaj do przeglądarki przeglądarki, które będą podążały ścieżką, jeśli używają IE dla kompatybilności i jeśli używają jakiejkolwiek innej przeglądarki, a następnie przesyłają je do kodu, który już działa. – HenryGuy

Odpowiedz

3

Chyba używasz tag <base> wewnątrz głowy sekcji kodu HTML; dobrze?

Jeśli jest skierowany do http zamiast https, że pęknie IE.

+0

Wow, to w rzeczywistości byłoby to. Całkowicie zapomniałem, że rzuciłem ten tag w szablonie nagłówka. To zabawne, ale przełamałem to tylko w IE, ale myślę, że to IE dla ciebie. Dzięki! –

2

spróbuj ustawić crossDomain true w swoim wniosku tak:

$.ajax({ 
    type: 'post', 
    url: 'https://mydomain/ajax/retrieve_transaction_details.php', 
    data: /* my data is here */, 
    crossDomain: true, 
    success: function(response){ 
     // do something with the response 
    }, 
    error: function (xhr, ajaxOptions, thrownError){ 
     alert(xhr.status); 
     alert(thrownError); 
    } 
}); 

powinno to pozwalają, aby wniosek, niezależnie od tego, czy to jest cross-domain czy nie.

+0

Hmm, to zmieniło błąd na "Brak transportu". Ciekawy. –

+0

spójrz na ten wpis: http://stackoverflow.com/questions/5241088/jquery-call-to-webservice-returns-no-transport-error –

Powiązane problemy