2013-01-18 25 views
5

के बाद प्रस्तुत करने वाला दृश्य मैं केकेपीएचपी में एक ऐप बना रहा हूं और मेरे पास एक jquery संवाद विंडो है और हर बार जब उपयोगकर्ता इसे खोलता है तो मैं एक jquery अनुरोध करना चाहता हूं जो अनुरोध के परिणामस्वरूप सामग्री को पॉप्युलेट करेगा। मैं निम्न स्क्रिप्ट के साथ एक js फ़ाइल webroot/js फ़ोल्डर में है कि है,:केकपीएचपी: AJAX

$.ajax({      
    url:'/projects/getAssets', 
    type:"POST",           
    data:assetData, 
    //dataType:'text', 
    update: '#assetManagerContent' 
}); 

मेरी नियंत्रक फ़ाइल में (ProjectsController) मैं निम्नलिखित कार्य हो:

function getAssets($id = null) { 
    // Fill select form field after Ajax request. 
    if(!empty($this->data)){ 
     $this->set('assetsFilter', 
     $this->Project->Asset->find('list', 
      array(
       'conditions' => array(
        'Asset.project_id' => '23' 
       ) 
      ) 
     ) 
    ); 
    $this->render('elements/assets', 'ajax'); 
    } 
} 

और अंत में मैं

<?php $assetsFilter = $this->requestAction('projects/getAssets'); ?> 
    <?php foreach($assetsFilter as $assetFilter): ?> 
    <div class="assetManager-asset"> 
     <div class="thumb"></div> 
     <div class="label-name"><?php echo $assetFilter['AssetType']['type'] ?></div> 
     <div class="label-date"><?php echo $assetFilter['Asset']['layer'] ?></div> 
     <?php //echo $assetFilter['Asset']['id'] ?> 
    </div> 
    <?php endforeach; ?> 

उपयोगकर्ता संवाद ajax अनुरोध शुरू हो रहा है खोलता है लेकिन कुछ भी #assetManagerContent div में हो रहा है जब: (तत्वों/संपत्ति) दृष्टिकोण है।

मुझे आशा है कि किसी ने मुझे बता सकते हैं मैं गलत क्या कर रहा हूँ

+0

http://stackoverflow.com/questions/11240639/cakephp-ajax-render –

+0

में एक समान पद मिले http://stackoverflow.com/questions/11240639/cakephp पर समान पद मिले -जैक्स-रेंडर –

उत्तर

4

जहाँ तक मुझे पता है, वहाँ jQuery ajax api में कोई update विकल्प है। इसके बजाय, आप सफलता कॉलबैक जोड़ सकते हैं और वहाँ डेटा पॉप्युलेट करना चाहिए:

$.ajax({      
    url:'/projects/getAssets', 
    type:"POST",           
    data:assetData, 
    //dataType:'text', 
    success: function(data) { 
     $('#assetManagerContent').html(data); 
    } 
}); 
+0

मैंने सफलता समारोह का उपयोग किया और मेरा AJAX कॉल एक सफलता है। मुझे अपना अद्यतन डेटा मिलता है। हालांकि, यह एकमात्र चीज है जो मेरे विचार पर देखी जाती है। दृश्य पर बाकी सब कुछ – gkalikapersaud

+0

से निराश है ऐसा लगता है कि आप बस अपने चयनकर्ता के आधार पर सबकुछ बदल रहे हैं। उपर्युक्त उदाहरण में, अपनी व्यू सामग्री (सभी सामग्री नहीं) में चयनकर्ता के साथ '# propertyManagerContent' को प्रतिस्थापित करें। – jeremyharris

2

कोई update -option है, jeremyharris पहले ही बताया बस के रूप में।

आप केवल AJAX के माध्यम से भरी हुई HTML के साथ एक तत्व को भरने के लिए चाहते हैं, आप भी $.load() उपयोग कर सकते हैं:

$('#assetManagerContent').load('/projects/getAssets', assetData); 

यह मूल रूप से, इसी $.ajax() कॉल के लिए एक आशुलिपि है और स्वचालित रूप से एक POST अनुरोध करता है, तो जारी करेगा data पैरामीटर मौजूद है।

देखें: http://api.jquery.com/load/

0

बनाने के लिए अपनी कार्रवाई तेज, क्लीनर और पुन: प्रयोज्य आप इसे इस तरह से लिख सकते हैं।

function getAssets($id = null) { 
    // Fill select form field after Ajax request. 
    if(!empty($this->data)){    
     return $this->Project->Asset->find('list', 
        array(
        'conditions' => array(
          'Asset.project_id' => '23' 
       ) 
       ) 
      );  
    } 
} 

अजाक्स

$.ajax({      
     url:'/projects/getAssets/'+id, 
     type:"POST", 
     success: function(data) { 
      $('#assetManagerContent').html(data); 
     } 
    }); 
OR 
$('#assetManagerContent').load('/projects/getAssets/'+id); 
0

यह काम करता है, लेकिन शो पाठ मोड में परिणाम। उदा।

<form action="/amit/tour-writer/derivedItineraries/getHotelDetail/1230" 
id="DerivedItineraryGetHotelDetailForm" method="post" accept-charset="utf-8"> 
<div style="display:none;"><input type="hidden" name="_method" value="POST"/> 
</div> 
<div class="required"><label for="DerivedItineraryInclusion">Inclusion</label> 
<textarea name="data[DerivedItinerary][inclusion]" class="ckeditor" 
required="required" style="width:200px;" cols="30" rows="6" 
id="DerivedItineraryInclusion">Test data</textarea></div></td></tr> 
</form>