jQuery gửi chuỗi dưới dạng tham số POST


97

Tôi muốn gửi một chuỗi dưới dạng tham số ajax Post.

Đoạn mã sau:

$.ajax({
   type: "POST",
   url: "http://nakolesah.ru/",
   data: 'foo=bar&ca$libri=no$libri',
   success: function(msg){
     alert('wow'+msg);
   }
});

Không hoạt động. Tại sao?


2
Tôi thấy rằng bạn là một nhà phát triển PHP và tôi cũng thấy rằng bạn đã làm điều này: ca$libri=no$libri. Chỉ cần kiểm tra để chắc chắn ở đây ... bạn có chắc là mình không vô tình cố gắng sử dụng các cấu trúc PHP nơi các cấu trúc JS nên là? Nếu bạn muốn bao gồm giá trị của $libribiến vào chuỗi này, hãy thử này: 'foo=bar&ca' + $libri + '=no' + $libri.
treeface

nono :) tôi hiểu tất cả các khoảnh khắc tạo js bằng php :) đó là tên của các biến ajax trong APS. Tôi tạo trình phân tích cú pháp để phân tích một số trang web bằng ajax. Và bây giờ tôi có lỗi tại sao. Đó là truy vấn tên miền chéo coz. Tôi phải tạo truy vấn trước cho máy chủ của mình :)
Mirgorod

Câu trả lời:


181

Hãy thử như thế này:

$.ajax({
    type: 'POST',
    // make sure you respect the same origin policy with this url:
    // http://en.wikipedia.org/wiki/Same_origin_policy
    url: 'http://nakolesah.ru/',
    data: { 
        'foo': 'bar', 
        'ca$libri': 'no$libri' // <-- the $ sign in the parameter name seems unusual, I would avoid it
    },
    success: function(msg){
        alert('wow' + msg);
    }
});

1
Nó không phải là dữ liệu: {foo: 'bar'}, không có dấu nháy đơn '?
Marius Stănescu

6
@MariusStanescu, cả hai đều là cú pháp javascript tương đương.
Darin Dimitrov

3
cũng khá chắc chắn rằng $ trong ca $ libri hoàn toàn ổn
Michael Crook

Không trả lời câu hỏi liên quan đến đăng dưới dạng chuỗi :(, xem câu trả lời bên dưới.
Andrew

Điều này hoạt động nhưng điều này không: foo: 'bar'. Tôi đã dành 2 ngày vô cớ Tôi đã không thêm các dấu hiệu dây vào cả hai bên !!!
Eugen Sunic

39
$.ajax({
    type: 'POST',    
    url:'http://nakolesah.ru/',
    data:'foo='+ bar+'&calibri='+ nolibri,
    success: function(msg){
        alert('wow' + msg);
    }
});

15
đây là lý do tại sao tôi đến đây, để tìm hiểu cách gửi dữ liệu $ .post dưới dạng một chuỗi. câu trả lời được chấp nhận hoàn toàn không giúp tôi với điều đó. cảm ơn bạn.
ớtNUT

Đồng ý, tôi cũng gặp phải một tình huống trong đó một chuỗi được yêu cầu cho một khung mà tôi đang phát triển, câu trả lời tốt. Trong trường hợp của tôi, tôi đã có thể làm cho công việc này bằng cách đặt các chuỗi trong một biến bên cạnh dữ liệu :, định dạng của chuỗi của tôi là 'var = value & var2 = value2?'
Joseph Astrahan

13

Tôi thấy rằng họ không hiểu câu hỏi của bạn. Câu trả lời là: thêm tham số "truyền thống" vào lệnh gọi ajax của bạn như sau:

$.ajax({
  traditional: true,
  type: "POST",
  url: url,
  data: custom ,
  success: ok,
 dataType: "json"
});

Và nó sẽ hoạt động với các thông số ĐÃ ĐƯỢC CHUYỂN NHƯ MỘT DÂY CHUYỀN.


Cảm ơn! Điều này tiết kiệm ngày của tôi!
Dat TT

11

Đối với một ứng dụng tương tự, tôi phải bọc datađối tượng của mình bằng JSON.stringify()như sau:

data: JSON.stringify({ 
  'foo': 'bar', 
  'ca$libri': 'no$libri'
}),

API đang làm việc với một ứng dụng khách REST nhưng không thể khiến nó hoạt động với jquery ajax trong trình duyệt. stringify là giải pháp.


Tại sao chúng tôi phải làm điều này?
Renoir Reis

Không chắc chắn nhưng một số ký tự trong phản hồi không được coi là chuỗi trừ khi bị ép buộc.
Dylan Valade

4

Không chắc liệu điều này có còn thực tế hay không .. chỉ dành cho độc giả trong tương lai. Nếu điều bạn thực sự muốn là chuyển các tham số của mình như một phần của URL, bạn có thể nên sử dụng jQuery.param () .


1

Không phải là câu trả lời trực tiếp cho câu hỏi của bạn .. Nhưng sau đây là cú pháp duy nhất được sử dụng để làm việc cho tôi -

data: '{"winNumber": "' + win + '"}',

Và tham số-tên khớp với đối số của phương thức máy chủ


1

Tôi cũng đã phải đối mặt với vấn đề chính xác này. Nhưng tôi đã có một giải pháp và nó hoạt động hoàn hảo. Tôi cần phải chuyển các tham số đã được tạo bởi hàm javascript. Vì vậy, mã dưới đây đang làm việc cho tôi. Tôi đã sử dụng ColdFusion cho phần phụ trợ. Tôi chỉ trực tiếp sử dụng các tham số như một biến.

                    $.ajax({
                    url: "https://myexampleurl.com/myactionfile.cfm",
                    type: "POST",
                    data : {paramert1: variable1,parameter2: variable2},
                    success: function(data){
                        console.log(data);                              
                    } )};

0

Tôi đang gặp phải vấn đề trong việc chuyển giá trị chuỗi sang tham số chuỗi trong Ajax. Sau rất nhiều googling, tôi đã đưa ra một giải pháp tùy chỉnh như bên dưới.

var bar = 'xyz';
var calibri = 'no$libri';

$.ajax({
   type: "POST",
   dataType: "json",
   contentType: "application/json; charset=utf-8",
   url: "http://nakolesah.ru/",
   data: '{ foo: \'' + bar + '\', zoo: \'' + calibri + '\'}',
   success: function(msg){
       alert('wow'+msg);
   },
});

Ở đây, barcalibri là hai biến chuỗi và bạn có thể chuyển bất kỳ giá trị chuỗi nào cho các tham số chuỗi tương ứng trong phương thức web.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.