...

View Full Version : jQuery $.post callback data is empty



markjohnson
11-10-2010, 07:20 PM
I have the following in the header if index.php:


<script type="text/javascript" src="/jquery/jqueryui/js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="/jquery/jqueryui/js/jquery-ui-1.8.6.custom.min.js"></script>
<script type="text/javascript" src="/jquery/jqueryui/development-bundle/ui/jquery.ui.tabs.js"></script>
<script>
$(document).ready(function(){
$(function() {
$( "#tabs" ).tabs();
});
$("#submit").click(function(){
var post = $('#myForm').serialize();
$.post("functions.php", post, function(data) {
alert(data);
});
});
});
</script>

The relevant body of index.php is:


<form action="" method="post" enctype="multipart/form-data" name="myForm" id="myForm">
<label for="keyword">Keyword</label>
<input type="text" name="keyword" id="keyword" />
<input type="submit" name="submit" id="submit" value="Submit" />
</form>

Functions.php has the following:


<?php require_once('../Connections/cms.php'); ?>
<?php
$myFile = "testFile.txt";
$fh = fopen($myFile, 'w');

// And then the code to run a query with the keyword and print results in a table


When I refresh index.php and click on 'Submit', it DOES create testFile.txt - meaning it is correctly referring to functions.php, but the alert is empty.

I then delete testFile.txt and click on 'Submit' without refreshing, and this time, it does NOT create testFile.txt - and hence, my guess is that it is not calling on functions.php, and of course, alert is empty as usual.

What I want to do is this:
I want to be able to click on the Submit button - without refreshing the page - and return data from functions.php and display it within a div tag on index.php

What am I doing wrong to get an empty alert?

SB65
11-11-2010, 08:46 AM
I think your page is just refreshing because of the native form action. You can prevent this by adding return false to your click statement.

Also, although I don't think this is relevant to your issue, you are calling document ready twice - $(function) is equivalent to $(document).ready().

Have a try with:


<script>
$(document).ready(function(){

$( "#tabs" ).tabs();

$("#submit").click(function(){
var post = $('#myForm').serialize();
$.post("functions.php", post, function(data) {
alert(data);
});
return false;
});
});
</script>

markjohnson
11-11-2010, 02:32 PM
Great, it worked with 'return false'!

Thanks!



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum