Jump to content
iwato

PHP => the jQuery $.ready( ) Function

Recommended Posts

QUESTION:  How does one manipulate jQuery in a $( document ).ready( function( ) {...}); with PHP?  Is it even possible?

BACKGROUND:  I have created a form whose performance depends on a combination of both PHP and jQuery.  Unfortunately, I cannot get the two sets of code to synchronize properly.  A seasoned programmer would probably tell me to start over and use one or the other, but not both.  Unfortunately, there are things that I know how to do in Javascript, but not in PHP, and vice versa.  It is because of this that I have gotten myself into this mess.

Share this post


Link to post
Share on other sites

PHP runs before the page starts loading. By the time any Javascript has started PHP has long finished. You can use AJAX to run additional PHP after the page has loaded.

Since I don't know exactly what you're trying to do I can't give any suggestions. Usually PHP and Javascript shouldn't mix.

Share this post


Link to post
Share on other sites

Hi, Ingolme!

So, may I then assume that PHP has completed its tasks even before the $.ready( ) function has been triggered?  If so, this would suggest strongly that the entire routine should be run with PHP.  Do you know of a well-written online tutorial that I can read (not watch), and that would teach me how to program the behavior of <select>, <option>, and <input> elements using PHP?

Showing you my actual code would probably be confusing.  It is even confusing to me, and I am the one who wrote it!
In brief, I have a series of data checks that generate error messages and a <select> element that generates an <input> element with a text field when a certain <option> element is selected.  The data checks and error messages are generated in PHP, and the creation of the <input> element is achieved using jQuery.

If you would like to see the confusion in operation, you are welcome.  Go to  http://www.grammarcaptive.com/_gates/gate7/gate7d.php and click the SEND button without having filled in any data.  Do this for each form element one at a time and watch what happens.  The troubled area is language selection, and its integration with the error statements of the other form elements.  Do not be concerned with filling in my database table with useless information, as I will clean it once everything is in working order.  Nothing will be sent until all of the information has been filled in, anyway.

If you want to view the page in its proper context, then open to http//www.grammarcaptive.com/overview.html and follow the splash screen to the end of the final gate.  The backward arrows in the bottom of the splash panels will get you to the desired location more quickly than the forward arrows.

Roddy

Share this post


Link to post
Share on other sites

PHP runs on the server, generates the entire code for the page, then sends it to the browser. After that, the browser starts reading the HTML and running Javascript.

If you're having trouble making sense of your code then you probably need to restructure it. Separate your code into pieces that each work on their own and put them into functions, then have a main program that decides which functions to call and what to do with the data they return.

I checked your test page, but I don't know what to look for. The form validation appears to work properly. The language field doesn't get prepopulated after the validation fails but aside from that there's not a problem.

Share this post


Link to post
Share on other sites

FWIW, this ties into what was being taught to you in your header thread.  PHP is a server side language, and is generating the body of document being requested by the browser, hence the reason why content being rendered before headers was causing you issues.

 

There are generally two options for something like this

  1. Mix PHP with HTML / JS / CSS, in which PHP builds up the page content and delivers a final page to be rendered by the browser, including all the JS to be executed
  2. Just use PHP to provide data, and have JavaScript request just that data (ie. JSON) using AJAX and let JS / HTML handle generating the page content dynamically

I prefer the second option since it keeps business logic separate from presentation, doesn't try and mix too many things, and is generally easier to organize and reason about.  This is the general approach to most web development, where the backend, be it PHP, Java, NodeJS, etc acts as an API serving up all data to the client (browser) and then something like jQuery, AngularJS, React etc would be used to render that data into UI using the DOM, or whatever conventions are exposed by the given library / framework.

 

Anyway, just some additional information for you to consider as you plan out your project.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×