jQuery ส่งสตริงเป็นพารามิเตอร์ POST


99

ฉันต้องการส่งสตริงเป็นพารามิเตอร์ ajax Post

รหัสต่อไปนี้:

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

ไม่ทำงาน. ทำไม?


2
ผมเห็นว่าคุณเป็นนักพัฒนา PHP ca$libri=no$libriและฉันยังเห็นว่าคุณทำอย่างนี้: แค่ตรวจสอบให้แน่ใจที่นี่ ... คุณแน่ใจหรือไม่ว่าคุณไม่ได้พยายามใช้โครงสร้าง PHP โดยบังเอิญในที่ที่ควรเป็น JS หากคุณต้องการที่จะรวมค่าของตัวแปรเป็นสตริงนี้ลองนี้$libri 'foo=bar&ca' + $libri + '=no' + $libri
treeface

nono :) ฉันเข้าใจทุกช่วงเวลาของการสร้าง js โดย php :) เป็นชื่อของตัวแปร ajax ใน APS ฉันสร้างโปรแกรมแยกวิเคราะห์ที่แยกวิเคราะห์บางไซต์ด้วย ajax และตอนนี้ฉันมีข้อผิดพลาดทำไม เป็นแบบสอบถาม coz crossdomain ฉันต้องสร้างแบบสอบถามไปยังเซิร์ฟเวอร์ของฉันก่อน :)
Mirgorod

คำตอบ:


183

ลองทำดังนี้

$.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
มันไม่ควรเป็น data: {foo: 'bar'}, without apostrophe?
Marius Stănescu

6
@MariusStanescu ทั้งสองเป็นไวยากรณ์จาวาสคริปต์ที่เทียบเท่ากัน
Darin Dimitrov

3
ยังค่อนข้างแน่ใจว่า $ ใน ca $ libri นั้นดีอย่างสมบูรณ์แบบ
Michael Crook

ไม่ตอบคำถามเกี่ยวกับการโพสต์เป็นสตริง :( ดูคำตอบด้านล่าง
แอนดรู

วิธีนี้ใช้งานได้ แต่ไม่ได้: foo: 'bar' ฉันใช้เวลา 2 วันโดยไม่ได้ตั้งใจฉันไม่ได้เพิ่มสัญญาณสตริงทั้งสองข้าง !!!
Eugen Sunic

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

15
นี่คือเหตุผลที่ฉันมาที่นี่เพื่อค้นหาวิธีการส่งข้อมูล $ .post เป็นสตริง คำตอบที่ได้รับการยอมรับไม่สามารถช่วยฉันได้เลย ขอบคุณ.
ChiliNUT

ตกลงฉันมีสถานการณ์เช่นกันที่จำเป็นต้องใช้สตริงสำหรับกรอบงานที่ฉันกำลังพัฒนาคำตอบที่ดี ในสถานการณ์ของฉันฉันสามารถทำให้สิ่งนี้ทำงานได้โดยวางสตริงในตัวแปรถัดจากข้อมูล: รูปแบบของสตริงของฉันคือ '? var = value & var2 = value2'
Joseph Astrahan

13

ฉันเห็นว่าพวกเขาไม่เข้าใจคำถามของคุณ คำตอบคือ: เพิ่มพารามิเตอร์ "ดั้งเดิม" ในการเรียก ajax ของคุณดังนี้:

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

และจะทำงานกับพารามิเตอร์ PASSED AS A STRING


ขอบคุณ! นี่ช่วยประหยัดวันของฉัน!
Dat TT

11

สำหรับแอปพลิเคชันที่คล้ายกันฉันต้องห่อdataวัตถุด้วยJSON.stringify()สิ่งนี้:

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

API ทำงานกับไคลเอนต์ REST แต่ไม่สามารถทำให้มันทำงานกับ jquery ajax ในเบราว์เซอร์ stringify คือทางออก


ทำไมเราต้องทำเช่นนี้?
Renoir Reis

ไม่แน่ใจ แต่อักขระบางตัวในการตอบกลับต้องไม่ถือเป็นสตริงเว้นแต่จะถูกบังคับ
Dylan Valade

4

ไม่แน่ใจว่ายังคงเป็นจริง.. สำหรับผู้อ่านในอนาคต หากสิ่งที่คุณต้องการจริงๆคือการผ่านพารามิเตอร์ของคุณเป็นส่วนหนึ่งของ URL คุณอาจจะใช้ jQuery.param ()


1

ไม่ใช่คำตอบโดยตรงสำหรับคำถามของคุณ .. แต่ต่อไปนี้เป็นไวยากรณ์เดียวที่ใช้สำหรับฉัน -

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

และชื่อพารามิเตอร์ตรงกับอาร์กิวเมนต์ของเมธอดเซิร์ฟเวอร์


1

ฉันก็ประสบปัญหานี้เช่นกัน แต่ฉันมีวิธีแก้ปัญหาและทำงานได้อย่างสมบูรณ์ ฉันต้องการส่งผ่านพารามิเตอร์ที่สร้างขึ้นโดยฟังก์ชันจาวาสคริปต์แล้ว ดังนั้นโค้ดด้านล่างจึงใช้ได้สำหรับฉัน ฉันใช้ColdFusionสำหรับแบ็กเอนด์ ฉันเพิ่งใช้พารามิเตอร์เป็นตัวแปรโดยตรง

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

0

ฉันประสบปัญหาในการส่งค่าสตริงไปยังพารามิเตอร์สตริงใน Ajax หลังจาก googling ไปมากฉันได้คิดวิธีแก้ปัญหาที่กำหนดเองดังต่อไปนี้

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);
   },
});

ที่นี่barและcalibriเป็นตัวแปรสตริงสองตัวและคุณสามารถส่งผ่านค่าสตริงใดก็ได้ไปยังพารามิเตอร์สตริงตามลำดับในวิธีการเว็บ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.