使用jQuery.ajax在MySQL中存储表单数据

时间:2009-05-12 10:05:35

标签: php jquery mysql wordpress

编辑:我找到了获取正确网址的解决方案。 Se the solution in this thread

嗨,我在处理表单时遇到问题,以便将数据保存在MySQL数据库中。我正在使用Wordpress作为CMS。

我使用过这个例子:http://www.ryancoughlin.com/2008/11/04/use-jquery-to-submit-form

我很确定我的问题的根源是我在javascript中使用了错误的网址。错误消息仅返回'undefined',Firebug报告找不到404错误的页面。

那么正确的网址是什么? 任何帮助将不胜感激。

这是我的网站结构:

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

这是我的网站建立的逻辑:

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>

process_frm_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;      
  });
}

2 个答案:

答案 0 :(得分:0)

使用像http://www.yourwebsite.com/storelocator/process_frm_store.php这样的绝对路径更安全方面更简单。

否则.ajax方法的url参数应为storelocator/process_frm_store.php,因为您的.js文件包含在基本路径中并在jsstorelocator文件夹之外执行

答案 1 :(得分:0)

sl_register.tpl.php 中的 <?php 标记已经 include_once <?php 标签内...除非你做的事我不明白这可能会破坏一些东西。