2011-09-26 12 views
7

मैं थोड़े, उस पर भ्रमित कर रहा हूँ जब एक ही पृष्ठ पर मूल्य भेजने की कोशिश कर पर jQuery अजाक्स गुजर मूल्य।php एक ही पृष्ठ

<script> 
     $("select[name='sweets']").change(function() { 
     var str = ""; 
     $("select[name='sweets'] option:selected").each(function() { 
      str += $(this).text() + " "; 

      }); 

      jQuery.ajax({ 
      type: "POST", 
      data: $("form#a").serialize(), 

      success: function(data){ 
       jQuery(".res").html(data); 

       $('#test').text($(data).html()); 


      } 
      }); 
      var str = $("form").serialize(); 
      $(".res").text(str); 
    }); 
    </script> 
<div id="test"> 
<?php 
    echo $_POST['sweets']; 
    ?> 
    </div> 
<form id="a" action="" method="post"> 
    <select name="sweets" > 
    <option>Chocolate</option> 
    <option selected="selected">Candy</option> 
    <option>Taffy</option> 
    <option>Caramel</option> 
    <option>Fudge</option> 
    <option>Cookie</option> 
</select> 
</form> 

वैसे यह प्रदर्शित होगा यदि यह एचटीएमएल टैग के शीर्ष पर है, लेकिन यदि उसके शरीर के अंदर यह शून्य दिखाई देगा।

+0

क्या आप पूर्ण PHP कोड पोस्ट कर सकते हैं? – andyb

+0

एक परीक्षण चरण पर है जो पूर्ण PHP कोड है। यदि आपके पास कोई और प्रश्न है तो बस एक टिप्पणी जोड़ें। धन्यवाद – GianFS

+0

मेरा उत्तर पर चर्चा से, यह स्पष्ट है कि हम आपकी मदद करने के बारे में अधिक जानकारी की जरूरत है बन गया। आप क्या करने की कोशिश कर रहे हैं, बिल्कुल? यदि आप एक ही पृष्ठ पर पोस्ट कर रहे हैं तो आपको AJAX की आवश्यकता क्यों है? – bfavaretto

उत्तर

8

यहाँ के लिए काम कर रहे कोड है:

अद्यतन

अपने कोड पर डिबग सामान का एक बहुत हुई, कोशिश (ajax अनुरोध के उत्पादन को देखने के लिए Firebug की आवश्यकता है) आप। एक ही पृष्ठ है, जो आप पहले से ही कर रहे हैं आप url पैरामीटर खाली रख सकते करने के लिए ajax अनुरोध भेजने के लिए। यदि आप $_POST मान रखते हैं तो स्क्रिप्ट को अलग तरीके से व्यवहार करने की कोशिश कर रहे हैं तो नीचे isset का उपयोग करें जैसा कि मैंने नीचे उपयोग किया है।

<?php 
    if(isset($_POST['sweets'])) 
    { 
    echo $_POST['sweets']; 
    exit; 
    } 
    ?> 

    <script> 
     $(function(){ 
      $("select[name='sweets']").change(function() { 
      var str = ""; 
      $("select[name='sweets'] option:selected").each(function() { 
       str += $(this).text() + " "; 

       }); 

       jQuery.ajax({ 
       type: "POST", 
       data: $("form#a").serialize(), 

       success: function(data){ 
        jQuery(".res").html(data); 

        $('#test').html(data); 


       } 
       }); 
       var str = $("form").serialize(); 
       $(".res").text(str); 
     }); 
     }); 
     </script> 


<div id="test"> 

    </div> 

<form id="a" action="" method="post"> 
    <select name="sweets" > 
    <option>Chocolate</option> 
    <option selected="selected">Candy</option> 
    <option>Taffy</option> 
    <option>Caramel</option> 
    <option>Fudge</option> 
    <option>Cookie</option> 
</select> 
</form> 
1

आप इस तरह

$(document).ready(function(){ 
    // your code here 
}); 

के साथ अपने कोड लपेट चाहिए, यह केवल चलेंगे जब ब्राउज़र अपने HTML की संरचना प्रसंस्करण खत्म।

<script> 
$(document).ready(function(){ 
    $("select[name='sweets']").change(function() { 
     jQuery.ajax({ 
      type: "POST", 
      data: $("form#a").serialize(), 
      success: function(data) { 
       // Check the output of ajax call on firebug console 
       console.log(data); 
      } 
     }); 
    }); 
}); 
</script> 
+0

मैं लग रहे है कि अभ्यस्त काम है, मैं इसे जोड़ने की कोशिश की। लेकिन सवाल यह है कि jquery AJAX से PHP को फिर से लोड किए बिना मूल्य कैसे भेजें। – GianFS

+0

आप कोड पहले से ही ऐसा करते हैं। मैंने document.ready का उपयोग करने का सुझाव दिया क्योंकि ब्राउज़र को पता है कि वह तत्व क्या है, इससे पहले कि आप 'चेंज' हैंडलर को '