Welcome Guest, Not a member yet? Register   Sign In
How to make Remote Function work in codeigniter framework?
#21

[eluser]jiahui[/eluser]
Actually I agree with your point. I guess is might the query string problem. But take a look the jquery.validate.js

Code:
remote: function(value, element, param) {
            if ( this.optional(element) )
                return "dependency-mismatch";
            
            var previous = this.previousValue(element);
            if (!this.settings.messages[element.name] )
                this.settings.messages[element.name] = {};
            this.settings.messages[element.name].remote = typeof previous.message == "function" ? previous.message(value) : previous.message;
            
            param = typeof param == "string" && {url:param} || param;
            
            if ( previous.old !== value ) {
                previous.old = value;
                var validator = this;
                this.startRequest(element);
                var data = {};
                data[element.name] = value;
                $.ajax($.extend(true, {
                    url: param,
                    mode: "abort",
                    port: "validate" + element.name,
                    dataType: "json",
                    data: data,
                    success: function(response) {
                        var valid = response === true;
                        if ( valid ) {
                            var submitted = validator.formSubmitted;
                            validator.prepareElement(element);
                            validator.formSubmitted = submitted;
                            validator.successList.push(element);
                            validator.showErrors();
                        } else {
                            var errors = {};
                            errors[element.name] = previous.message = response || validator.defaultMessage( element, "remote" );
                            validator.showErrors(errors);
                        }
                        previous.valid = valid;
                        validator.stopRequest(element, valid);
                    }
                }, param));
                return "pending";
            } else if( this.pending[element.name] ) {
                return "pending";
            }
            return previous.valid;
        },

There has nothing POST involved.

And my controller site has already declared like this

Code:
function check_user_availability()
        {
            $request = $this->input->post('username');
            
            $users = array('asdf', 'Peter', 'Peter2', 'George');
            $valid = 'true';
            foreach($users as $user) {
                if( strtolower($user) == $request )
                    $valid = 'false';
            }
            echo $valid;
                    }
#22

[eluser]garymardell[/eluser]
Code:
remote: function(value, element, param) {
            if ( this.optional(element) )
                return "dependency-mismatch";
            
            var previous = this.previousValue(element);
            if (!this.settings.messages[element.name] )
                this.settings.messages[element.name] = {};
            this.settings.messages[element.name].remote = typeof previous.message == "function" ? previous.message(value) : previous.message;
            
            param = typeof param == "string" && {url:param} || param;
            
            if ( previous.old !== value ) {
                previous.old = value;
                var validator = this;
                this.startRequest(element);
                var data = {};
                data[element.name] = value;
                $.ajax($.extend(true, {
                    url: param,
                    type: "POST",
                    mode: "abort",
                    port: "validate" + element.name,
                    dataType: "json",
                    data: data,
                    success: function(response) {
                        var valid = response === true;
                        if ( valid ) {
                            var submitted = validator.formSubmitted;
                            validator.prepareElement(element);
                            validator.formSubmitted = submitted;
                            validator.successList.push(element);
                            validator.showErrors();
                        } else {
                            var errors = {};
                            errors[element.name] = previous.message = response || validator.defaultMessage( element, "remote" );
                            validator.showErrors(errors);
                        }
                        previous.valid = valid;
                        validator.stopRequest(element, valid);
                    }
                }, param));
                return "pending";
            } else if( this.pending[element.name] ) {
                return "pending";
            }
            return previous.valid;
        },

The default type for the request is GET using jQuery so i added the line type: 'POST'.
#23

[eluser]jiahui[/eluser]
I don't know how to express my feeling now.... I never know that default type is Get in jquery.js file. How stupid I am.
Garymardell, you are my saviour indeed. Thank you x 1000,0000. My problem finally had solved.
#24

[eluser]garymardell[/eluser]
Hehe, no worries. Smile
#25

[eluser]jiahui[/eluser]
Hi, I'm back here to ask a question.

In case my Url is like this http://localhost/hoorfatt/index.php/accounts/edit/15

how can make the remote function return back to right path?




Theme © iAndrew 2016 - Forum software by © MyBB