Ajax表单不会发布

Could someone explain or show me why my Ajax form won't post?. I'm using smarty template engine.

The form

<form action="/ajax/update_details.php" method="post" id="detailsform">
    <input type="text" name="city" value="{$profile_user.city}" />
    <input type="text" name="profile_message" value="{$profile_user.profile_message}" />
    <textarea name="about_me" cols="53" rows="5" class="submit_form_textfield">{$profile_user.about_me}</textarea>
    <textarea name="hobbies" cols="53" rows="5" class="submit_form_textfield">{$profile_user.hobbies}</textarea>
    <input type="hidden" name="action" value="user_details" />
    <input type="submit" class="submit_form_button" value="Update Details" />
    <a class="success" style="display: none; color: green; text-align: centera;">Your details have been updated</a>
</form>

Javascript

{literal}
<script type="text/javascript">
    $("#detailsform").submit(function() {                                       
    var url = "/ajax/update_details.php";                               
        $.ajax({
        type: "POST",
        url: url,
        data: $("#detailsform").serialize(),
        success: function(data)
        {
        $(".success").show(1000);
        $(".success").fadeOut(5000);
        }
    });                                     
    return false;
});
</script>
{/literal} 

And update_details.php

<?php

session_start();

require_once('../vars.php');
require_once('../includes/user.class.php');

$user = new User();

if (isset($action) && $action=='user_details' && isset($_SESSION['loggeduser_id'])){

    $city = preg_replace("/[^a-z]/i","",$_POST['city']);
    $profile_message = preg_replace("/[^a-z]/i","",$_POST['profile_message']);
    $about_me = ($_POST['about_me']);
    $hobbies = ($_POST['hobbies']);

    $user->update($_SESSION['loggeduser_id'],array("city" => $city,"profile_message" => $profile_message,"about_me" => $about_me,"hobbies" => $hobbies));   
}

?>

Please could someone help me out as i'm new to coding it would be mostly appreciated

Your code is not waiting for the page to load, unless your script is right before </body> you need to use $(document).ready(function() { or $(function(){ or any other valid syntax. NB, it needs closing too.

<script type="text/javascript">
$(document).ready(function() {
      $("#detailsform").submit(function(){  
         // etc
      });
});
</script>

Ref: http://api.jquery.com/ready/

Add document ready handler.

$(function(){ 
     $("#detailsform").submit(function() {
         //your stuff here....
       }); 
 });

Ref: Ajax Form Won't Post