2010-01-05 27 views
9

Tôi đang thực hiện một yêu cầu ajax và tôi có một số vấn đề, đây là mã jquery của tôi:không gian trống trong yêu cầu ajax với jquery

var url = "http://www.domain.com/SearchService.svc/search?keyword=my search keywords"; 
    $.ajax({ 
     type: "GET", 
     url: url, 
     dataType: "json"....... 
..... 

Khi đưa ra yêu cầu này đôi khi tôi có khoảng trống trong tìm kiếm của tôi (var url) và sau đó các từ khóa được cutted như vậy trong ví dụ trên ví dụ nó chỉ tìm kiếm cho "của tôi". Tôi hiểu đây là một câu hỏi khá đơn giản và đó phải là một giải pháp dễ dàng. Chỉ không thể tìm thấy giải pháp ...

Cảm ơn sự giúp đỡ của bạn!

+0

bạn nên hãy xem xét sử dụng định dạng chuỗi truy vấn chuẩn, nghĩa là 'http://www.domain.com/SearchService.svc?search=my search keywords' (lưu ý dấu chấm hỏi), cùng với câu trả lời của Pekka có lẽ là giải pháp tốt nhất. – falstro

+0

đã cập nhật câu hỏi, vừa viết sai địa chỉ .. – Martin

Trả lời

15

Bạn có thể sử dụng encodeURI:

var url = encodeURI("http://www.domain.com/SearchService.svc/search=my search keywords"); 

này mã hóa URL và chuyển đổi những khoảng trống và bất kỳ ký tự khác không an toàn 'để sử dụng URL.

Xem thêm encodeURIComponent để mã hóa dữ liệu an toàn được chèn vào URI.

+0

Tôi biết điều này có thể là cách trễ nhưng tôi chỉ thấy điều này khi tôi có một câu hỏi tương tự 'thoát' đã bị phản đối và được thay thế bằng encodeURI cho ứng dụng này –

+0

Cảm ơn bạn đã nhắc nhở! –

1

Chỉ cần chuyển đổi khoảng trắng ở định dạng url. Đối với mỗi khoảng trắng char sử dụng% 20 thay vì:

var url = "http://www.domain.com/SearchService.svc/search=my%20search%20keywords"; 
    $.ajax({ 
     type: "GET", 
     url: url, 
     dataType: "json"....... 
..... 

Hoặc nếu bạn muốn làm cho nó một cách tự động nhiều hơn chỉ cần sử dụng chức năng javascript escape() như Felix gợi ý.

+1

có chức năng javascript thực hiện điều này, tôi nghĩ nó được gọi là thoát. – falstro

+0

@row yes bạn đã đúng. Tôi không thể nhớ tên của hàm. – rogeriopvl

2

Bạn có thể thoát khỏi từ khóa tìm kiếm trong URL nhưng điều đúng cần làm là thêm search làm tham số cho yêu cầu ajax.

var url = "http://www.domain.com/SearchService.svc/search=my search keywords"; 
    $.ajax({ 
     type: "GET", 
     url: url, 
     data: { "search" : "my search keywords" } 
     dataType: "json"....... 
+1

có vẻ như anh ấy không sử dụng chuỗi truy vấn chuẩn, vì vậy sẽ không hoạt động – falstro

+0

Ahh Tôi hiểu rồi, bạn nói đúng. –

1

Bạn có thể làm

var url = "http://www.domain.com/SearchService.svc/search?keyword=" 
    + encodeURIComponent("my search keywords"); 

Trong khi thoát() cũng có thể làm việc cho bạn, có những tình huống mà chỉ encodeURIComponent() sẽ làm việc, chẳng hạn như đối với nhân vật & = +, vv

Các vấn đề liên quan