views:

134

answers:

2

I have a $.get() call to a PHP page that takes 4 GET parameters. For some reason, despite giving the $.get() call all 4, it only passes the first two. When I look at the dev console in chrome, it shows the URL that gets called, and it only passes action and dbname. Heres the code:

$.get('util/util.php', { action: 'start', dbname: db, url: starturl, crawldepth: depth }, function(data) {
        if (data == 'true') {
            status = 1;
            $('#0').append(starturl + "<ul></ul>");
            $('#gobutton').hide();
            $('#loading').show("slow");
            while(status == 1) {
                setTimeout("update()",10000);

            }
        } else {
            show_error("Form data incomplete!");
        }
    });

and heres the URL that I see in the developer console:

http://localhost/pci/util/util.php?action=start&amp;dbname=1hkxorr9ve1kuap2.db

** EDIT ** I have been informed that I need to encode the URL that I am trying to pass through the header. How would I go about encoding it in javascript, and decoding it in php?

A: 

Probably you will need to check whether your input strings are properly quoted. Internally jQuery will build the paramter string out of the parameter map you specified using its param() method. This method will construct an object of the keys and values, which will likely not be parseable if you quoted your keys and values incorrectly.

@ Felix Kling: jQuery automatically encodes keys and values of the parameter string with encodeURIComponent.

FK82
+4  A: 

Are you sure that the starturl and depth variables are defined? A simple alert() before the $.get() will be enough to check.

In regards to your edit, you can encode strings in JavaScript with the encodeURIComponent function. And decode it back again in the PHP with urldecode. They both take one string argument.

GlenCrawford