2011-04-12 10 views
8

मेरी नजर में मैं एक ajax कॉल के बजाय पूर्ण html पृष्ठ:CodeIgniter/jQuery - अजाक्स कॉल देता है मेरी गूंज

$(".previous").click(function() { 
     $.ajax({ 
      type: "POST", 
      url: "planner/get_cal", 
      data: {current_month: current_month}, 
      success: function(msg){ 
       alert(msg); 
      } 

     }); 

मेरी नियोजक नियंत्रक में get_cal समारोह:

function get_cal() 
{ 
    echo "dinosaurs"; 
} 

हालांकि, "डायनासोर" लौटने की बजाय, यह एक पूर्ण HTML पृष्ठ देता है। मैं समझ नहीं सकता क्यों। विचार? बहुत बहुत धन्यवाद।

+0

क्या आपके पास अपने नियंत्रक से जुड़ा एक लेआउट है जो इसे प्रस्तुत करेगा? – mikelbring

+0

जब आप ब्राउज़र से मैन्युअल रूप से प्रयास करते हैं तो आपको क्या मिलता है? – Vamsi

+0

@ कृष्णा, get_cal पेज पर जाकर मैन्युअल रूप से मुझे "डायनासोर" के साथ एक खाली पृष्ठ मिलता है, जैसा कि अपेक्षित है। – cabaret

उत्तर

10

मैंने अपने प्रश्न पर टिप्पणियों में सुझाए गए एक प्रमुख स्लैश का उपयोग करके इसे हल किया।

$.ajax({ 
    type: "POST", 
    url: "/planner/get_cal", 
    dataType: "text", 
    data: {current_month: current_month}, 
    success: function(msg){ 
    alert(msg); 
    } 
});   
0

यह बहुत आसान है के रूप में उपयोग करने के लिए ../../controller/method डेटाप्रकार सेट करने का प्रयास करने के लिए "पाठ"


$.ajax({ 
    type: "POST", 
    url: "planner/get_cal", 
    data: {current_month: current_month}, 
    dataType: "text", 
    success: function(msg){ 
     alert(msg); 
    } 
}); 
0

Controler की CodeIgniter संरचना का उपयोग करते समय/विधि uri खंडों मैंने पाया मेरी Jquery AJAX अनुरोधों में यूआरएल है। मैं डेटा टाइप निर्दिष्ट करने की भी सिफारिश करता हूं ताकि स्ट्रिंग को पार्स किया जा सके और ऑब्जेक्ट के रूप में लौटा दिया जा सके।

यहां एक उदाहरण है;


$.ajax({ 
    type: "POST", 
    dataType: "json", 
    url: "../../controller/method", 
    success: mySuccessFunction 
}); 
0

किसी के लिए है कि Zend फ्रेमवर्क उपयोग कर रहा है, मैं एक ही मुद्दों जहां AJAX प्रतिक्रिया json_encode() प्रतिक्रिया के बजाय पूर्ण HTML लौट रहा था सामना कर रहा था। यह मेरा नियंत्रक के लिए निम्न जोड़कर हल किया गया था:

if ($this->getRequest()->isXmlHttpRequest()) 
    { 
     $this->_helper->layout()->disableLayout(); 
     $this->_helper->viewRenderer->setNoRender(true); 
    } 
0

समस्या के इन प्रकार के आते हैं जब अपने php फ़ाइल और html फ़ाइल उचित पथ पर इतना है कि अपाचे सर्वर php फ़ाइलें पार्स नहीं कर सका है। उल्लेख किए बिना: 'टेक्स्ट' और कोई अन्य प्रारूप भी, AJAX काम करेगा। लेकिन सुनिश्चित करें कि आपका सर्वर php फ़ाइल तक पहुंच रहा है। अन्यथा पूरी फ़ाइल को टेक्स्ट के रूप में माना जाएगा और लौटाया जाएगा।

3

आप भी इसे नीचे की तरह अपने php फ़ाइल में गूंज के बाद बाहर निकलने जोड़कर प्राप्त कर सकते हैं:

function get_cal() 
{ 
    echo "dinosaurs";exit; 
} 

यह काम करेंगे। :)

0

बस उल्लेख करना चाहता था: यूआरएल वास्तव में इस पर निर्भर करेगा कि आपके पास .htaccess और फ़ोल्डर संरचना सेट-अप है। तो सबसे अच्छा तरीका है कई यूआरएल की कोशिश करने के लिए है, अर्थात्:
../../controller/method
../controller/method
server_folder/index.php/नियंत्रक/विधि
http://example.com/server_folder/index.php/controller/method
और उसके बाद किसी दिए गए परिस्थिति में सबसे अच्छा काम करने वाला व्यक्ति चुनें।

संबंधित मुद्दे