使用jQuery.ajax将表单数据存储到MySQL数据库中

3

编辑:我找到了获取正确URL的解决方案。在此线程中查看解决方案

您好,我在处理表单时遇到问题,以便可以将其数据保存在我的MySQL数据库中。 我正在使用WordPress作为CMS。

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

我很确定我的问题源于我在JavaScript中使用了错误的URL。错误消息只返回“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

为了保险起见,最好使用绝对路径,如http://www.yourwebsite.com/storelocator/process_frm_store.php

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


感谢您的回答Bogdan。我认为这不会起作用,因为我正在使用具有用户友好型URL的WordPress CMS。我的页面/表单的URL是: http://localhost/mysite/store-locator/register-store-label逻辑URL是: http://localhost/mysite/sl_register.tpl.phpFirebug报告以下错误: POST(url)404未找到其中url是我在JavaScript文件中输入的任何内容。 - Steven

0

你在sl_register.tpl.php中的include_once周围包裹了<?php标签,而它已经在<?php标签内部...除非你正在做一些我不理解的事情,否则这可能会导致某些问题。


哦,抱歉...那只是我复制粘贴时的一个打字错误。 在我的完整代码中,那一行不在 PHP 标签内。 我会编辑并修复这个问题。 - Steven

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接