Saya memiliki layanan web berikut;
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
Stok standar tanpa perubahan pada dekorator kelas.
Saya punya metode jQuery ini;
var webMethod = "http://localhost:54473/Service1.asmx/HelloWorld";
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
data: "{}",
dataType: "json",
url: webMethod,
success: function(msg){ alert(msg.d); },
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
Ini tindakan posting karena nanti saya harus mengirim data ke sana.
Ketika saya menjalankan jQuery saya mendapatkan kesalahan "Tidak ada transportasi" yang dikembalikan.
Satu hal yang juga harus saya sebutkan adalah bahwa jQuery disimpan dalam file HTML sederhana di komputer saya dan WebService juga berjalan di komputer saya.
Tidak ada kode di belakang pada halaman HTML itu hanya halaman web dan bukan ac # project atau apa pun.
Adakah yang bisa mengarahkan saya ke arah yang benar di sini?
jquery
ajax
web-services
grieg
sumber
sumber
Jawaban:
Jika halaman jQuery Anda tidak dimuat
http://localhost:54473
maka masalah ini mungkin karena Anda mencoba membuat permintaan lintas-domain.Perbarui 1 Lihatlah posting blog ini .
Perbarui 2 Jika ini memang masalahnya (dan saya curiga), Anda mungkin ingin melihat JSONP sebagai solusinya. Berikut adalah beberapa tautan yang mungkin membantu Anda memulai:
sumber
Tambahkan ini:
jQuery.support.cors = true;
Ini memungkinkan skrip lintas situs dalam jQuery (diperkenalkan setelah 1.4x, saya percaya).
Kami menggunakan versi jQuery yang sangat lama (1.3.2) dan menukarnya dengan 1.6.1. Semuanya berfungsi, kecuali panggilan .ajax (). Menambahkan baris di atas memperbaiki masalah.
sumber
Saya memiliki kesalahan yang sama pada halaman, dan saya menambahkan baris ini:
dan akhirnya bekerja untuk saya;) tidak ada lagi kesalahan di IE9.
sumber
Tak satu pun dari jawaban yang diajukan benar-benar bekerja untuk saya. Kasus penggunaan saya sedikit berbeda (melakukan ajax sampai ke file S3 .json di IE9). Pengaturan
jQuery.support.cors = true;
menyingkirkanNo Transport
kesalahan tapi saya masih mendapatkanPermission denied
kesalahan.Apa yang berhasil bagi saya adalah menggunakan jQuery-ajaxTransport-XDomainRequest untuk memaksa IE9 untuk menggunakan XDomainRequest. Menggunakan ini tidak memerlukan pengaturan
jQuery.support.cors = true;
sumber
saya menyelesaikannya dengan menggunakan dataType = 'jsonp' di tempat dataType = 'json'
sumber
Saya juga mendapatkan masalah ini dan semua solusi yang diberikan di atas gagal atau tidak berlaku karena pembatasan layanan web klien.
Untuk ini, saya menambahkan iframe di halaman saya yang berada di server klien; Jadi ketika kita memposting data kita ke iframe dan iframe kemudian mempostingnya ke layanan web. Karenanya referensi silang domain dihilangkan.
Kami menambahkan pemeriksaan asal 2 arah untuk mengonfirmasi hanya data posting halaman yang diotorisasi ke dan dari iframe.
Semoga ini bisa membantu
sumber
Bagi saya itu adalah cerita yang sama sekali berbeda.
Karena halaman ini memiliki peringkat mesin pencari yang bagus, saya harus menambahkan kasus saya dan solusinya di sini juga.
Saya membangun
jquery
sendiri denganwebpack
memilih hanya modul yang saya gunakan. Ajax selalu gagal dengan pesan "No Transport" sebagai satu-satunya petunjuk.Setelah debugging yang lama, masalahnya ternyata bisa
XMLHttpRequest
digunakanjquery
dan tidak disertakan secara default.Anda harus secara eksplisit memasukkan
jquery/src/ajax/xhr
file untuk membuat ajax berfungsi di browser.sumber
Saya menyelesaikannya hanya dengan menghapus domain dari url permintaan.
sumber