2010-09-13 63 views
0

我练的阿贾克斯。我不知道该怎么做,或者怎么做。这是我第一次这样做。这是我的代码。AJAX问题自动保存

<?php 
function save() { 
    // mysql connection 

    $text = $_POST['name']; 

    // insert query 
} 
?> 

<input type="text" name="name" onchange="<?php save() ?>" value="default"> 

我想要做的就是这样。输入类型文本里面有一个默认文本。然后如果我改变它会自动保存。我怎样才能做到这一点?

回答

0

我不知道你是否应该这样保存。

您可能希望事件onblur(),或者更好的是,通过JavaScript添加事件,不要使用inline属性。

但是最大的问题是你正试图从JavaScript调用一个PHP函数。 JavaScript不能像那样与PHP交互。考虑客户端/服务器关系以及代码的运行位置。

您需要调用一个JavaScript函数来发送输入的value,然后PHP可以使用它来写入数据库。

4

简短回答:您无法从JavaScript调用PHP函数,因此您尝试它的方式无效。

长答案:您将需要找到AJAX的介绍并学习它。为了做你的描述,你将需要:

  • 在JavaScript实例化一个XMLHttpRequest对象
  • 告诉它在某个URL,其中服务器将调用你的PHP脚本
  • 告诉联系服务器它发送所有必要的信息(尤其是文本的用户键入)通过POST
  • 编写PHP脚本,以这样一种方式,它会保存文本,并返回类似true/false表明成功/失败
  • 回到JavaScript中,处理响应,例如,通过显示一个消息,说“信息保存”或“邮件无法保存:(错误消息)”,取决于它是否成功与否。
0

我想你需要首先理解AJAX的概念。

试试这个。 http://www.w3schools.com/ajax/ajax_intro.asp

给你一个简单的想法; 想象有一个假想的<FORM> tag其中它有一个方法,操作和数据提交。在你的情况下,输入的onchange事件触发这个<FORM>的“提交”假设你已经设置数据的提交值。发生这种情况时,页面不刷新或重定向。相反,javascript会创建一个“单独的进程线程”,就像<FORM>在不同的“窗口”中提交一样。因此,术语“异步”。

AJAX更多的是一个Javascript的事情。

0

有多种方法可以创建AJAX调用。最简单的就是使用Javascript框架,如MootoolsJQuery。 Ajax很简单,这种方式。检查http://demos111.mootools.net/Ajax.Form Mootools演示和jQuery在这里http://docs.jquery.com/Tutorials

逻辑非常简单。将值添加到文本框中,以便在值更改时保存该框。您的事件函数将生成Ajax请求并将其发送到服务器,如果您选择,您可以使用此响应来让用户知道保存事件的状态。

这里是我为你写的快速的东西,可能有助于理解。将需要包括Mootools库。可能有错误,但Ajax调用的概念在那里。 page = index.php

<?php 
// PHP before anything else... 
// 
// Check to see if task is specified and need to save changes 
if (isset($_POST['task']) && $_POST['task'] == 'save') { 
    // mysql connection 
    $text = $_POST['name']; 
    // insert query 
    $isSuccess = 'Status of SAVING CHANGES'; 

    // Output... output will be used by 'update' to set value of <div id="log">...</div> 
    // so user knows what is happening 
    echo $isSuccess ? 'Successfully Saved' : 'Failed to Save'; 
    exit(); 
} 
?> 
<html> 
    <head> 
     <!-- NEED TO INCLUDE MOOTOOLS LIBRARY --> 
     <script type="text/javascript"> 
      window.addEvent('domready', function(){ 
       $('name').addEvent('blur', saveChanges); 

       /** 
       * Generates request and saves changes 
       */ 
       function saveChanges(){ 

        // URL which will be called 
        var url = "index.php"; 

        // New Ajex request. Note that it will be sent because of .request() at the end 
        new Ajax(url, { 
         // Method : post/get 
         method: 'post', 

         // Data to be passed 
         data :{ 
          name : $('name').value, 
          task : 'save' 
         }, 

         // Output of the AJAX will be set to this element 
         update: $('log') 

        }).request(); 
       } 
      }); 
     </script> 

    </head> 
    <body> 
     <form action="index.php" onsubmit="return false"> 
      <div id="log"></div> 
      <!-- SOME CONTENT ... --> 
      <input type="text" name="name" id="name" value=""> 
     </form> 
    </body> 
</html>