2012-11-10 82 views
3

我想從jquery腳本運行簡單的後端python方法。Cherrypy調度

jQuery的

$(document).ready(function(){ 
    $('#btn').click(function(event){ 
    event.preventDefault(); 
    var commit = $("#test_form input[type='radio']:checked").val(); 
    alert(commit); 
      $.ajax({ 
       type: "POST", 
       url: "submitted", 
       data: commit, 
       success: function(data) { 
        alert(data["title"]); 
        $("#status").html(data["title"]); 
       } 
      }); 
    return false; 
    }); 

    $('#update_help').click(function() { 
     $('#update_info').toggle('slow', function() { 
     // Animation complete. 
     }); 
    }); 
}); 

在我的CherryPy Python腳本,我有以下

@cherrypy.expose 
def submitted(self, commit = 0): 
    cherrypy.response.headers['Content-Type'] = 'application/json' 
    print"Got here" 
    #return simplejson.dumps(dict(title="hello", success=True)) 
    return "foo" 

的HTML文件就像下面

<form id="test_form" method="post"> 

    <li class = "option"> 
      <input type="radio" name="commit" value = "0"/> Option 1 
     </li> 
     <li> 
      Option 1 

     </li> 
     <li class = "option"> 
       <input type="radio" name="commit" value = "1"/> Option 2 <br> 
     </li> 
     <li class = "option"> 
      <input id="btn" type="submit"/> 
     </li> 
    </ul>   
     </form> 

我注意到的是, ajax後從來沒有真正找到「提交」功能。整個頁面重新加載,並且沒有任何回覆到ajax post回調。我確信這與我在調度時做錯了什麼有關,但我錯過了什麼?

感謝

+0

其類是在提交處理?也許這行應該包括該類 - url:「/ class/submitted」, –

+0

這實際上解決了url http:// localhost:9001/plugins/set_prop/submitted。,但在Chrome Inspector中,我看到一個404找不到錯誤。 SetProp是類。其中的索引方法,工作得很好。 – user1814696

+0

當你到localhost:9001/plugins/set_prop/submitted或你的ajax請求/提交時,你會在Chrome中看到一個404? –

回答

0

嘗試更新JavaScript來這...

 $.ajax({ 
      type: "POST", 
      url: "/plugins/set_prop/submitted", 
      data: commit, 
      success: function(data) { 
       alert(data["title"]); 
       $("#status").html(data["title"]); 
      } 

希望這有助於。 Andrew

0

當您僅使用submitted作爲目標鏈接時,它將相對於打開的html文件。這意味着當你的html文件在/plugins/set_prop/時,它應該是正確的。

但是關於您提交處理程序的標記: 您沒有「真正的」json。 試試你的代碼更改爲:

@cherrypy.expose 
@cherrypy.tools.json_out() 
def submitted(self, commit = 0): 
    print("Got here") 
    return {"title": "hello", "success": True} 

編輯: 你似乎使只有數據集爲真或假POST請求。所以cherrypy不明白你想要給出哪個參數。試着改變你的代碼:

$.ajax({ 
    type: "POST", 
    url: "submitted", 
    data: {commit: commit}, 
    success: function(data) { 
     alert(data["title"]); 
     $("#status").html(data["title"]); 
    } 
}); 

(參見:jQuery ajax post data