अजाक्स के माध्यम से कई डेटा फ़ील्ड कैसे भेजें? [बन्द है]


136

मैं फंस गया हूं: मैं AJAX का उपयोग करके एक फ़ॉर्म सबमिट करने का प्रयास कर रहा हूं, लेकिन मुझे अपने AJAX कॉल के माध्यम से कई डेटा फ़ील्ड भेजने का कोई तरीका नहीं मिल रहा है।

$(document).ready(function() {
  $("#btnSubmit").click(function()  {
    var status = $("#activitymessage").val();
    var name = "Ronny";
    $.ajax({
      type: "POST",
      url: "ajax/activity_save.php",
      **data: "status="+status+"name="+name"**,
      success: function(msg) {...

मैंने हर तरह का सामान आज़माया है:

data: {status: status, name: name},

या इस तरह सामान भी सिर्फ परीक्षण प्रयोजनों के लिए:

data: "status=testing&name=ronny",

लेकिन मैं जो भी कोशिश करता हूं, मुझे activity_save.phpअपने एसक्यूएल में कुछ भी नहीं मिलता है ।

तो, मेरे AJAX कॉल में डेटा की अधिक लाइनें डालने के लिए सही सिंटैक्स क्या है?


इनपुट डेटा को संभालने के दोनों द्वितीयक रूप मान्य हैं। आप इसे PHP की तरफ कैसे एक्सेस कर रहे हैं? आप एक HTTP स्निफर (पीसी पर फ़िडलर, एक मैक पर HTTPScoop जैसा कुछ) पर विचार कर सकते हैं, जो आपको दिखाएगा कि वास्तव में तार पर क्या चल रहा है।
जॉन ग्रीन

मैं आपके पोस्ट डेटा को डीबग करने के लिए फ़ायरबग / क्रोम का उपयोग करने का सुझाव दूंगा। सुनिश्चित करें कि आप एक HTTP कोड 200 प्राप्त कर रहे हैं और यह कि फॉर्म डेटा आपके विचार में पोस्ट किया जा रहा है, यह होना चाहिए। यदि पोस्ट डेटा के साथ सब कुछ सही लगता है, तो मैं आपके PHP सर्वर साइड कोड को डीबग करना शुरू करूंगा।
काइल रोजर्स

फायरबग का उपयोग करना वास्तव में मदद करता है, इसके साथ मेरे पृष्ठ की जांच करने के बारे में पूरी तरह से भूल गया। : /
सीमाएं

डेटा परम के सामने और अंत में ** का उपयोग क्या है?
हिनकासनर

1
@heinkasner, मुझे लगता है कि ** सिर्फ पाठक को दिखाने के लिए है जो लेखक को जोर देने के लिए पसंद करेगा। जब कोड फ़ाइल में सहेजने के लिए तैयार हो जाता है तो ** को हटाना होगा!
मार्क

जवाबों:


256

सही सिंटैक्स है:

data: {status: status, name: name},

यहाँ पर निर्दिष्ट किया गया है: http://api.jquery.com/jQuery.ajax/

इसलिए अगर वह काम नहीं करता है, तो मैं उन चरों को सतर्क कर दूंगा कि वे मान लें।


4
उन्होंने विशेष रूप से बताते हैं सवाल में: "मैं सामान के सभी प्रकार की कोशिश की है: data: {status: status, name: name},"
Ry-

20
मैं सिर्फ सही सिंटैक्स की ओर इशारा कर रहा था और कह रहा था कि समस्या कुछ और होनी चाहिए न कि सिंटैक्स
एविटस

3
लगता है कि मेरा वाक्यविन्यास सही था, मेरा मानना ​​है कि मैंने एक बहुत ही बेवकूफ एसक्यूएल गलती की है।
समय

2
पुन: वाक्य रचना, ध्यान दें कि एक प्रमुख नाम '-' जैसे data: { site-name: "StackOverflow" }काम नहीं करेगा।
moey

से डॉक्स "डेटा विकल्प प्रपत्र की एक क्वेरी स्ट्रिंग या तो शामिल कर सकते हैं key1=value1&key2=value2, या रूप का एक उद्देश्य {key1: 'value1', key2: 'value2'}। बाद फार्म का उपयोग किया है, तो डेटा jQuery.param () से पहले ही भेज दिया जाता है का उपयोग कर एक क्वेरी स्ट्रिंग में बदल जाती है। "
जय ब्लान्कार्ड

32

आप JSON के माध्यम से या सामान्य POST के माध्यम से डेटा भेज सकते हैं, यहां JSON के लिए एक उदाहरण है।

 var value1 = 1;
 var value2 = 2;
 var value3 = 3;   
 $.ajax({
      type: "POST",
      contentType: "application/json; charset=utf-8",
      url: "yoururlhere",
      data: { data1: value1, data2: value2, data3: value3 },
      success: function (result) {
           // do something here
      }
 });

यदि आप इसे सामान्य पोस्ट के माध्यम से उपयोग करना चाहते हैं तो यह प्रयास करें

 $.ajax({
      type: "POST",
      url: $('form').attr("action"),   
      data: $('#form0').serialize(),
      success: function (result) {
         // do something here
      }
 });

.serialize()परिभाषित नहीं है!
अमीरहोसिन मेहरवारजी

9

उद्धरण के साथ प्रयास करें:

data: {"status": status, "name": name}

यह ठीक काम करना चाहिए।


4
+1। BTW यह वास्तव में डेटा: {स्थिति: "स्थिति", नाम: "नाम"} api.jquery.com/jquery.ajax
अमीर

6
var countries = new Array();
countries[0] = 'ga';
countries[1] = 'cd';

उसके बाद आप ऐसा कर सकते हैं:

var new_countries = countries.join(',')

उपरांत:

$.ajax({
    type: "POST",
    url: "Concessions.aspx/GetConcessions",
    data: new_countries,
    ...

यह बात JSON स्ट्रिंग प्रारूप के रूप में काम करती है।


इस समाधान ने मेरे लिए काम किया जब अजाक्स पर एक सरणी को पास करने की कोशिश की गई। इसे एक तार में शामिल करना समाधान था। धन्यवाद!
ब्रायन पॉवेल


3

यह मेरे लिए काम करता है।

यहाँ मेरा PHP है:

<div id="pageContent">
  <?php
    while($row = mysqli_fetch_assoc($stmt)) {
  ?>
  <br/>
  <input id="vendorName_" name="vendorName_<?php echo $row["id"]; ?>" value='<?php echo $row["vendorName"]; ?>'>
  <input id="owner_" name="owner_<?php echo $row["id"]; ?>" value='<?php echo $row["owner"]; ?>'>
  <input id="city_" name="city_<?php echo $row["id"]; ?>" value='<?php echo $row["city"]; ?>'>
  <button id="btn_update_<?php echo $row["id"]; ?>">Update</button>
  <button id="btn_delete_<?php echo $row["id"]; ?>">Delete</button>
  <?php
    }
  ?>
  </br></br>
  <input id = "vendorName_new" value="">
  <input id = "owner_new" value="">
  <input id = "city_new" value="">
  <button id = "addNewVendor" type="submit">+ New Vendor</button>
</div>

यहाँ AJAX का उपयोग करके मेरा jQuery है:

$("#addNewVendor").click(function() {
  alert();
  $.ajax({
    type: "POST",
    url: "create.php",
    data: {vendorName: $("#vendorName_new").val(), owner: $("#owner_new").val(), city: $("#city_new").val()},
    success: function(){
      $(this).hide();
      $('div.success').fadeIn();
      showUsers()
    }
  });
});

2

मैं अजाक्स में एक शुरुआत कर रहा हूं, लेकिन मुझे लगता है कि यह "डेटा: {स्थिति: स्थिति, नाम: नाम}" का उपयोग करने के लिए विधि डेटा प्रारूप को JSON यानी पर सेट किया जाना चाहिए

$.ajax({
type: "POST",
dataType: "json",
url: "ajax/activity_save.php",
data: {status: status, name: name},

3
ओवरफ्लो को रोकने के लिए आपका स्वागत है। dataTypeवह सामग्री प्रकार प्रतिक्रिया है जो आप सर्वर से प्राप्त करने की अपेक्षा करते हैं - वह नहीं जो आप भेज रहे हैं। आपके द्वारा भेजा जा रहा डेटा हमेशा परिवर्तित किया जाएगा foo=bar&bar=foo
h2ooooooo

1

इसे इस्तेमाल करो

data: '{"username":"' + username + '"}',

मैं लार्वा के साथ काम करने के लिए बहुत सारे सिंटैक्स की कोशिश करता हूं यह लार्वा 4.2 + अजाक्स के लिए मेरे लिए काम करता है।


1

इसे इस्तेमाल करे:

$(document).ready(function() {
  $("#btnSubmit").click(function() {
    var status = $("#activitymessage").val();
    var name = "Ronny";
    $.ajax({
      type: "POST",
      url: "ajax/activity_save.php",
      data: {'status': status, 'name': name},
        success: function(msg) {...

1

मैं AJAX के लिए नया हूँ और मैंने यह कोशिश की है और यह अच्छी तरह से काम करता है।

function q1mrks(country,m) {
  // alert("hellow");
  if (country.length==0) {
    //alert("hellow");
    document.getElementById("q1mrks").innerHTML="";
    return;
  }
  if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  } else {
    // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
      document.getElementById("q1mrks").innerHTML=xmlhttp.responseText;
    }
  }
  xmlhttp.open("GET","../location/cal_marks.php?q1mrks="+country+"&marks="+m,true);
  //mygetrequest.open("GET", "basicform.php?name="+namevalue+"&age="+agevalue, true)
  xmlhttp.send();
}

1

उपयोग करने का प्रयास करें :

$.ajax({
    type: "GET",
    url: "something.php",
    data: { "b": data1, "c": data2 },   
    dataType: "html",
    beforeSend: function() {},
    error: function() {
        alert("Error");
    },
    success: function(data) {                                                    
        $("#result").empty();
        $("#result").append(data);
    }
});

1
कुछ स्पष्टीकरण शायद?
CS95

0

यहां 2 दिनों के सिर-खरोंच के बाद मेरे लिए क्या काम करता है; मैं दो प्रमुख / मान भेजने के लिए AJAX 'डेटा' सेटिंग क्यों नहीं प्राप्त कर सका (एक कच्ची छवि डेटा वाले चर सहित) एक रहस्य था, लेकिन ऐसा लगता है कि jQuery.param () फ़ंक्शन क्या है लिए लिखा गया था;

बिना उद्धरणों के, अपने चर के साथ एक परम सरणी बनाएँ:

var params = { key_name1: var_1, key_name2: var_2  }; // etc.

var ser_data = jQuery.param( params );   // arbitrary variable name

अपने डेटा मान के रूप में चर ser_data का उपयोग करें;

      $.ajax({
       type: 'POST',
       url: '../php_handler_url.php',
       data: ser_data,
    }).success(function(response) {
       alert(response);
    });

प्रलेखन यहाँ है: https://api.jquery.com/jQuery.param/

उम्मीद है की वो मदद करदे!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.