2009-05-12 4 views
3

Modifier: J'ai trouvé la solution pour obtenir l'URL correcte. Se the solution in this thread. Bonjour, j'ai des problèmes pour traiter un formulaire afin que je puisse sauvegarder ses données dans ma base de données MySQL. J'utilise Wordpress comme CMS.Enregistrer les données de formulaire dans MySQL avec jQuery.ajax

Je l'ai utilisé cet exemple: http://www.ryancoughlin.com/2008/11/04/use-jquery-to-submit-form

Je suis assez sûr que la source de mon problème est que j'utilise la mauvaise URL dans le javascript. Le message d'erreur ne renvoie que 'indéfini' et Firebug signale une erreur de page introuvable 404.

Alors, quelle serait l'URL correcte? Toute aide serait grandement appréciée.

C'est ma structure du site:

Mywebsite (folder)  
    sl_register.tpl.php 
    includes (folder)  
    storelocator (folder) 
    process_frm_store.php 
    frm_store.php 
    js (folder) 
    myscripts.js 

Et ceci est la logique de mon site construire:

sl_register.tpl.php:

<?php 
/* 
    Template Name: SL - Register Store 
*/ 
    get_header(); 
    include_once 'includes/storeLocator/frm_store.php'; 
    get_footer(); 
?> 

frm_store.php:

<form id="store_data_form" class="appnitro" method="post" action=""> 
    <input id="store_active" name="store_active" type="hidden" value="pending" /> 
    <input id="store_name" name="store_name" type="text" value=""/> 
    <input id="store_street1" name="store_street1" type="text" value="" /> 
    <input id="saveForm" class="submitButton" type="submit" name="save" value="Save" /> 
</form> 

processus_fr m_store.php:

<?php 
    $myDB = new DAL(); 
    $myDB->connect(); 

    if (isset($_POST['save'])) 
    { 
    $formData = array(
     "name"=> mysql_real_escape_string($_POST['store_name']), 
     "street1"=> mysql_real_escape_string($_POST['store_street1']), 
     "zipcode"=> mysql_real_escape_string($_POST['store_zipcode'])); 

    $myDB->addNewStore($formData); 
    } 
?> 

myscripts.js:

jQuery.processForms = function() 
{ 
    jQuery('form#store_data_form').submit(function() 
    { 
    var store_name = 'Test store'; //jQuery("input#store_name").val(); 
    var store_street1 = 'Sesamy street';//Set constant for testing 
    var store_zipcode = '0574'; //Set constant for testing 
    var dataString = 'name='+ store_name + '&street1=' + store_street1 + '&zipcode=' + store_zipcode;  
    jQuery.ajax(
    { 
     type: "POST", 
     url: "process_frm_store.php", 
     data: dataString, 
     error: function(XMLHttpRequest, textStatus, errorThrown) 
     { 
     alert(errorThrown); // Just for debugging 
     jQuery('#suggestNewStore div.error').fadeIn(); 
     }, 
     success: function() 
     { 
     alert('It works!'); 
     jQuery('#suggestNewStore div.success').fadeIn(); 
     } 
    }); 
    return false;  
    }); 
} 

Répondre

0

Il plus simple à l'utilisateur le chemin absolu comme http://www.yourwebsite.com/storelocator/process_frm_store.php d'être sur le côté sûr.

Sinon, le param url de la méthode .ajax doit être storelocator/process_frm_store.php parce que votre fichier ..js est inclus et exécuté dans votre chemin de base, en dehors des js ou storelocator dossiers

+0

Merci pour votre réponse Bogdan. Je ne pense pas que cela fonctionnera bien, puisque j'utilise Wordpress CMS avec des URL conviviales. L'URL de ma page/formulaire est: http: // localhost/monsite/magasin-locator/register magasin label L'URL logique est: http: //localhost/mysite/sl_register.tpl.php Firebugs signale l'erreur suivante: POST (url) 404 introuvable Où url est tout ce que je mets dans mon fichier javascript. – Steven

0

Vous avez <?php étiquettes enroulé autour de votre include_once dans sl_register.tpl.php quand il est déjà à l'intérieur de <?php étiquettes ... à moins que vous faites quelque chose que je ne comprends pas que cela casse probablement quelque chose.

+0

Oh désolé ... c'est juste une faute de frappe de mon couper-coller. Dans mon code complet, cette ligne est en dehors des balises PHP. Je vais modifier et corriger cela. – Steven

Questions connexes