2013-08-20 42 views
15

Tôi hiện đang phát triển một dự án sử dụng PhoneGap và tôi cần phải làm một yêu cầu ajax đến máy chủ web địa phương của tôi trong đó có đã:PhoneGap/Android WebView ném "Lỗi không xác định crom: 0"

mã PHP

header('Access-Control-Allow-Origin: *'); 

Dù sao, khi tôi làm một yêu cầu ajax với jQuery trên Android tôi nhận được lỗi này (trong logcat adb):

D/chromium(23078): Unknown chromium error: 0 

Các mã Javascript là:

$.ajax({url:"http://192.168.1.219/works/privati/folder/api.php/getlastmaginfo",dataType:"json",success:function(data) 
{ 
    console.log("Finished loading by ajax"); 
    console.log(data); 
}}); 

Trình giả lập Ripple hoạt động như mong đợi, trong Android không.

Bất kỳ đề xuất nào? Cảm ơn bạn vì sự giúp đỡ!

CẬP NHẬT 2013/08/21:

Sau khi một số nghiên cứu tôi đến kết luận rằng $ .ajax sẽ không làm việc với PhoneGap (không biết tại sao, có lẽ một lỗi?). Thay vào đó, chúng tôi phải sử dụng $ .get, nhưng khi tôi thực hiện yêu cầu với $ .get tôi nhận được Unknown chromium error: -6 Tôi cũng đọc here rằng sự cố là do lỗi của Android với cơ chế URL của WebView.

tôi sẽ tiếp tục nghiên cứu của tôi cho đến khi tôi tìm thấy một giải pháp tốt và làm việc

CẬP NHẬT 2013/08/21 (2): Thậm chí sử dụng các công trình này ...

var fileTransfer = new FileTransfer(); 

fileTransfer.download(
    "http://192.168.1.219/works/privati/qlipmag/api.php/getlastmaginfo", 
    "json.json", 
    function(entry) { 
     console.log("OKAY"); 

    }, 
    function(error) { 
     console.log(error); 
    } 
); 

lỗi là tại new FileTransfer(); =>Uncaught ReferenceError: FileTransfer is not defined

CẬP NHẬT 2013/08/22:

Nó doens't làm việc thậm chí bằng cách tải một hình ảnh bên ngoài:

<img src="http://externalhost.com/image.jpg"/>

Cùng một lỗi.

Trong file manifest android Tôi đã setted phép:

<uses-permission android:name="android.permission.INTERNET" /> 

tôi không thực sự biết từ đâu đến vấn đề ...

CẬP NHẬT 2013/08/27: tôi đã cố gắng cùng một mã trên PhoneGap cho iPhone (trong iPhone Emulator) và yêu cầu ajax đã thành công khi tôi sử dụng một trang web bên ngoài. Sử dụng một trang web bên ngoài cũng trên Android không nhận được kết quả tương tự. Lỗi tương tự.

Mọi người đều có thể thấy lý do tại sao? nguồn gốc truy cập được setted tốt ...

+1

Cùng một vấn đề ở đây ... nhưng tôi đang sử dụng xương sống và nhận được thiết lập dữ liệu "url" trong một bộ sưu tập. – ricricucit

+3

ngón tay cái lên bạn thân, nghiên cứu phương pháp và tài liệu là ấn tượng, cộng với bạn chỉ cần giải quyết vấn đề của tôi rất tốt. –

+1

Brilliant - cảm ơn rất nhiều .. –

Trả lời

5

CẬP NHẬT 2013/08/27 (sau 1 giờ)

CẤP SOLVED

Trên thực tế PhoneGap không cho phép yêu cầu ajax đến địa chỉ IP, nó chỉ cho phép yêu cầu trong danh sách trắng (trong cấu hình .xml). Tôi đã sử dụng máy chủ sản xuất (có miền) để kiểm tra và nó hoạt động.

Cảm ơn các bạn. Tôi hy vọng điều này có thể giúp

+1

hi, tôi có hai phiên bản ứng dụng, giống hệt nhau, một công việc khác ném lỗi này. Phiên bản phonegap chỉ khác nhau: có lẽ giới hạn địa chỉ IP này đã được sửa sau khi phonegap 3.1.0 – netalex

+0

@Denys Vitali Tôi cũng gặp phải vấn đề tương tự, tôi có thể thêm địa chỉ IP vào tên miền không. – Pritish

0

Hãy thử tắt bộ nhớ cache

$.ajax({ 
    cache: false, 
    //your code 
}); 

Thông báo lỗi này thực sự là ngớ ngẩn.Nó chủ yếu có nghĩa là ứng dụng của bạn không thể tìm thấy tài nguyên trên hệ thống tệp. Vì vậy, hãy thử vô hiệu hóa bộ nhớ cache, vì vậy nó sẽ luôn tải tài nguyên từ máy chủ.

+0

Không có vấn đề gì, không phải lỗi bộ nhớ cache, cùng lỗi: 'D/crom (3228): Lỗi crom không xác định: 0' –

2

Để làm rõ điều này trong trường hợp ai đó tình cờ gặp nó như tôi đã làm, $ .ajax không hoạt động với PhoneGap/Cordova - nhưng như bạn thấy .. tên miền phải nằm trong danh sách trắng.

1

Kể từ Cordova 4 trở lên chỉ có <access origin="*" /> trong config.xml không hoạt động. Bạn cần sử dụng cordova-plugin-whitelist.

Khi plugin được cài đặt, bạn có thể sử dụng đoạn mã sau trong config.xml để thực hiện giống nhau:

<allow-navigation href="*" /> 
<allow-intent href="*" /> 

Xin lưu ý rằng nói chung nó không có thực hành tốt để sử dụng "*" als ký tự đại diện. Thay vào đó xác định các giao thức và địa chỉ cụ thể.

Để biết thêm thông tin về làm thế nào để sử dụng cordova-plugin-whitelist vui lòng truy cập https://github.com/apache/cordova-plugin-whitelist

+1

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. - [Từ đánh giá] (/ review/low-quality-posts/10356844) – Rajesh

+0

Vâng, bạn nói đúng ... xin lỗi khá mới ở đây. Tôi đã cập nhật câu trả lời. – Erik