• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[CJAX] ajax won't work when called from any method other than index() in my application/controllers controller


I've been trying to use Cjax Framework while still preserving the codeigniter call structure in my project

For instance, I want to use /ajax/ajxctrl/ajaxmthd to call controller "ajaxctrl" located in application/response only when i need a json reponse, e.g. for autocomplete purposes, and keep using application/controllers/ when I want to display my views, not having to switch regularly between urls like http://localhost/CIproject/ajax/ctrl/mthd and http://localhost/CIproject/controller/method and having frontend controllers split between two locations.
For that I've used require_once(FCPATH.'ajaxfw.php'); in my frontend controller

I am experiencing some troubles, I hope you'll be able to help me :

In my project, I have "regular" controllers (to call the view) in the "application/controllers" folder, and the controllers for ajax in "application/response"
In my controller, I've noticed that when I put the actions in the index() function, ajax works and I see the contents (although it behaves strangely, since it doesn't work all the time and sometimes one or two clicks on "refresh" do the trick). But when I put my actions in another function (eg. "showAutocomplete()") nothing happens except that I see the input field.

Basically it looks like this :

======== frontend.php ==========
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Frontend extends CI_Controller {

public function showAutocomplete()
  $ajax = ajax();
  $ajax->keyup('#text1', $ajax->autocomplete('ajax/autocompdata/update'));

======== myview.php ==========

    <?php echo ajax()->init(); ?>
    <input type="text" id="text1" value="" />

======= autocompdata.php =======


class Autocompdata extends CI_Controller {

function __construct()

function update()
  $data = array('test11','test12','test3');
  return $data;

So I call my view from the frontend controller like this : "http://localhost/myproject/frontend/showAutocomplete"
It shows me the input field, but nothing happens when I type in it. No ajax works : I've tried with success messages, still nothing shows.
If I rename showAutocomplete() into index() and call it like this : "http://localhost/myproject/frontend/" it works just fine, autocomplete, success message, and all. (Although I sometimes need to navigate to "http://localhost/myproject/ajax/autocompdata/update" and back to "http://localhost/myproject/frontend/" before it works for the first time, like with some sort of off/on switch)

I know it is quite a strange behaviour, is there something I am doing wrong ? The strangest part is that whether it works or not depends on whether I call my main function "index" or something else.

Thank you in advance for the help !
And sorry for the very long post, it was difficult to explain my situation clearly...


Messages In This Thread
[CJAX] ajax won't work when called from any method other than index() in my application/controllers controller - by El Forum - 04-09-2014, 01:06 AM

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  

  Theme © 2014 iAndrew  
Powered By MyBB, © 2002-2021 MyBB Group.