2012-05-25 85 views
0

我正在使用jquery get來嘗試刷新partialView並且它不工作。我至少有正確的語法嗎?我是新來的C#

//我的JavaScript(正常工作)

function takeSquare(square) { 
    var x = $(square).attr('x'); 
    var y = $(square).attr('y'); 

    alert(x + y); 

$.get("Home/updateBoardSquare", { posX: y, posY: y }, function (html) { 
    $("#gameBoard").replaceWith(html); 
}); 

alert(html); 
} 

和我的C#是

public ActionResult updateBoardSquare(int posX, int posY){ 

     String boardHtml = ""; 

     for (int i = 0; i < 15; i++) { 
      for (int k = 0; k < 15; k++) { 

       if (board[i, k] == null) 
        board[i, k] = new BoardSquare(i, k); 

       if (i == posX && k == posY) 
        board[posX, posY].takeSquare((String) Session["color"]); 

       boardHtml += board[i, k].getHtml(); 
      } 
     } 

     ViewData["board"] = boardHtml; 

     return PartialView(); 

    } 

我只是沒有從一開始發言得到任何東西

+2

您的發佈數據是{posX:y,posY:y}。應該是{posX:x,posY:y}? –

回答

0

我只是沒有從一開始發言

得到任何東西

您試圖在成功回調之外使用html變量。

而且你似乎已經顛倒使用y變量兩次:

$.get("Home/updateBoardSquare", { posX: x, posY: y }, function (html) { 
    $("#gameBoard").replaceWith(html); 
    alert(html); 
}); 
+0

謝謝。我已經做了2個改變。仍然無法正常工作 – Gambai

+0

什麼不起作用?控制器操作是否被擊中?您是否分析過FireBug中的AJAX請求?服務器發送的迴應是什麼? –

+0

謝謝,我不知道我可以在螢火蟲中看到它。它甚至沒有到達那裏。出於某種原因,我不需要Home/updateBoardSquare updateBoardSquare – Gambai

1

Internet Explorer無法處理相對URL。

使用此:

function takeSquare(square) { 
    var x = $(square).attr('x'); 
    var y = $(square).attr('y'); 

    alert(x + y); 

$.get('@Url.Action("Home", "updateBoardSquare")', { posX: y, posY: y }, function (html) { 
    $("#gameBoard").replaceWith(html); 
}); 


} 

看到了嗎?我使用@Url.Action讓Razor生成要使用的網址。好處在於,它既適用於在虛擬目錄中託管的根網站和應用程序。