2011-06-21 13 views
1

私は、移動中のテキスト行を変更するために見つけたスクリプトを使用しています(クリックすると入力が表示されます)。データベースに何もせずに正常に動作しますが、更新用にコードを追加するとDBが更新されますが、送信後にテキストは更新されません。私は何時間もそれをしてきたので、今は完全に失われています。ajaxリクエストでインラインテキスト変更が更新されない(DB上の変更)

マイJS:

$.ajaxSetup({ 
    url: '/ajax/nombreruta.php', 
    type: 'POST', 
    async: false, 
    timeout: 500 
}); 



$('.editable').inlineEdit({ 
    value: $.ajax({ data: { 'action': 'get' } }).responseText, 
    buttons: '', 
    cancelOnBlur: true, 
    save: function(event, data) { 
     var html = $.ajax({ 
      data: { 'action': 'save', 'value': data.value } 
     }).responseText; 

     //alert("id: " + this.id); 

     return html === 'OK' ? true : false; 
    } 
}); 

nombreruta.php:

<?php session_start(); 

$action = isset($_POST) && $_POST['action'] ? $_POST['action'] : 'get'; 
$value = isset($_POST) && $_POST['value'] ? $_POST['value'] : ''; 

include $_SERVER['DOCUMENT_ROOT'] ."/util-funciones.php";//for my db functions 

$cnx=conectar(); 
$sel="select * from ruta where id_ruta='".$_SESSION['ruta']."'"; 

$field=mysql_query($sel, $cnx); 
if($row=mysql_fetch_object($field)){ 
$data = $row->nombre; 
} 

switch ($action) { 

// retrieve data 
case 'get': 
    echo $data; 
    break; 

// save data 
case 'save': 
    if ($value != '') { 


     $sel="update ruta set nombre='".$value."' where id_ruta=".$_SESSION['ruta']; 
     mysql_query($sel,$cnx) or die(mysql_error()); 

     $_SESSION['data'] = $value; 

     echo "OK"; 
    } else { 
     echo "ERROR: no se han recibido valores."; 
    } 
    break; 

// no action 
default: 
    echo "ERROR: no se ha especificado accion."; 
    break; 
} 

Firebugのは、私は私のテキストを更新した後、それがOKを返すことを私に示して、私はサイトを更新した後、それが更新されたテキストが表示されますが、これまでにない私が始めたこのアプローチを考えることはあまり面倒ですが、私は私の解決策から一歩だようなので、多くの時間後に私は感じて...

EDIT:

私はこのプラグインを使用しています:http://yelotofu.com/2009/08/jquery-inline-edit-tutorial/

をそして、私のHTMLはあなたのコードは私のために正常に動作だけ

<span class="editable">Text</span> 
+0

あなたのHTMLも含めてください。 –

+0

そして、あなたは –

答えて

1

です....

ここで私は一緒に入れデモアプリケーション(asp.netが、基本的にはSAがあります私はデータベースをマイナスしました)。

クリアするだけ:Enterキーを押して保存します。キャンセルするには、ボタンをクリックしてからキャンセルします。

HTML

<html> 
    <head> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" ></script> 
    <script type="text/javascript" src="https://raw.github.com/caphun/jquery.inlineedit/master/jquery.inlineedit.js"></script> 
    <script type="text/javascript"> 
     $(function(){ 
      $.ajaxSetup({ 
       url: 'Test.ashx?' + window.location.search.substring(1), 
       type: 'POST', 
       async: false, 
       timeout: 500 
      }); 

      $('.editable').inlineEdit({ 
       value: $.ajax({ data: { 'action': 'get'} }).responseText, 
       buttons: '', 
       cancelOnBlur: true, 
       save: function (event, data) { 
        var html = $.ajax({ 
         data: { 'action': 'save', 'value': data.value } 
        }).responseText; 
        return html === 'OK' ? true : false; 
       } 
      }); 
     }); 
    </script> 
    </head> 
    <body> 
    <span class="editable">Test 1</span> 
    </body> 
</html>  

C#

public void ProcessRequest(HttpContext context) 
{ 
    //Custom Object to Get and Format my Connection String from the URL 
    QueryStringObjects QSO = new QueryStringObjects(context.Request, "InlineAjaxTest"); 

    //Look for any GET or POST params named 'action' 
    switch (context.Request.Params["action"]) 
    { 
     //If 'action' = 'save' then.... 
     case "save": 
      //Open a connection to my database (This is a custom Database object) 
      using (DataBrokerSql SQL = GetDataBroker(QSO.Connstring)) 
      { 
       //Create a SQL parameter for the value of the text box 
       DbParameter[] Params = { 
        new SqlParameter("@val", context.Request.Params["value"]) 
       }; 
       //Execute an Insert or Update 
       SQL.ExecSQL(@"UPDATE 
            Test_InlineAJAX 
           SET 
            Value = @val 
           IF @@ROWCOUNT=0 
            INSERT INTO 
            Test_InlineAJAX 
            VALUES 
            (@val)", Params); 

      } 
      //Return OK to the browser 
      context.Response.Write("OK"); 
      break; 
     default: 
      //Open a connection to my database 
      using (DataBrokerSql SQL = GetDataBroker(QSO.Connstring)) 
      { 
       //Get Value from my table (there's only one row so no need to filter) 
       object obj = SQL.GetScalar("Select Value From Test_InlineAJAX"); 
       //If my value is null return "" if not return the value of the object 
       context.Response.Write(obj != null ? obj.ToString() : ""); 
      } 
      break; 
    } 
} 

SQL

CREATE TABLE [dbo].[Test_InlineAJAX](
    [Value] [varchar](255) NULL 
) ON [PRIMARY] 

わからないかもしれない他に何を伝えるために、しかし、Sここに何かがあなたに考えを与えるでしょう...

+0

を使用しているプラ​​グイン私は申し訳ありませんが、私は私が私のコードで私のミスをするかもしれない場所を確認するために失敗し –

+0

を使用したプラグインで私の質問を編集した:Sは、これは私があまりにもASPを見る初めてです。それはデータベース接続なしで私のために働いた、私はテキストを変更した後、私はDBの更新を開始するときに問題が何であるかを確認する必要があります。 –

+0

私は自分のコードをデータベースに保存するように変更しました(私はC#コードの説明も追加しました)。私はPHPをよく読んでいませんが、あなたのエラーを引き起こしているように見える大きな事はないようです。おそらく、あなたのjQueryバージョンが最新のものであることを確認してください...?これ以外はアイデアがないと思う。申し訳ありませんが、より良い助けになることはできませんでした。がんばろう! –

関連する問題