01/10/2018, 13:52

Đoạn javascript get một string từ server không hoạt động

Mình chỉ có duy nhất 1 submit trong Home/Index.cshtml. Để khi click nó sẽ get một string từ server và alert nó lên:

<input type="submit" onclick="onClick()">

Và đoạn javascript:

function onClick(){
    alert("Begin");  // chạy được đoạn này
    $.get(
        "/Home/GetTime",
        null, 
        function (data){
            alert("Get success");
        })    // đoạn get này không chạy
    alert("End");  // đoạn này cũng không chạy
}

Đây là code trong HomeController:

public string GetTime(){
     return DateTime.Now.ToString();
}

Khi mình gõ trực tiếp :local:xxxx/Home/GetTime thì nó vẫn hiện được đoạn tring thời gian.
Browser là EDGE, Chrome,Firefox, IE .

viết 15:54 ngày 01/10/2018

get có data đâu mà để null thế kia?

$.get(URL,callback);

$.post(URL,data,callback);

Văn Dương viết 15:53 ngày 01/10/2018

Cảm ơn nhé.
Để mình thử xem sao.

Văn Dương viết 15:59 ngày 01/10/2018

Mình đã xóa null đi trong get nhưng vẫn không có gì xảy ra bạn ơi:

function onClick(){
    $.get(
        "/Home/GetTime",
        function (data){
            alert("Get success");
        }
    );
}
Quân viết 16:03 ngày 01/10/2018

có nhiều nguyên nhân gây ra tình trạng này, bạn nên tự debug để xem trace log thì sẽ dễ hơn là cứ làm mò mò thế này.
PS: hình như với lớp ltv mới giờ debug là 1 điều gì đó xa xỉ

viết 16:03 ngày 01/10/2018

bật F12 lên, chuyển qua tab Console rồi xem nó in ra bị lỗi gì

Văn Dương viết 16:05 ngày 01/10/2018

@qloved , @tntxtnt

Mình đã bật F12-Console.

Khi load trang nó có hiện 1 lỗi:

Phân tích XML: no root element found Địa chỉ : http://localhost:49399/.......

Mình có nhìn trên thanh địa chỉ thấy địa chỉ của mình đang hiện : localhost::49204 . Không biết có lien quan gì không.

Khi mình nhấn submit, có một lỗi nữa xuất hiện:

TypeError: $ is undefined [Tìm hiểu thêm] 

Đây là toàn bộ code trong Index.cshtml của mình. Nhờ các bạn chỉ giáo.

@{
    Layout=null;
}

<script type="text/javascript>
    function onClick(){
        $.get("/Home/GetRealTime", function(data){
            alert("OK");
        });
    }
</script>

<!DOCTYPE html>
<html>
    <body>
        <div>
              <input type="submit" onclick="onClick()"/>
        </div>
    </body>
</html>
Văn Dương viết 16:02 ngày 01/10/2018

Mình mới mò cái này được mấy ngày, chưa biết debug thế nào.

viết 15:56 ngày 01/10/2018

ặc ko xài layout có sẵn của asp.net, hèn gì ko có thư viện jquery làm sao gọi $.get được =)

script tags để trước </body>, nghe nói để tăng tốc gì đó

để jquery trước cái function kia:

<!DOCTYPE html>
<html>
<head>
  <title>Index</title>
  <meta charset="utf-8">
</head>
<body>
  <input type="submit" onclick="onClick()">
  
  <script
    src="https://code.jquery.com/jquery-3.2.1.min.js"
    integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
    crossorigin="anonymous">
  </script>
  <script>
    function onClick(){
        alert("Begin");
        $.get(
            "/Home/GetTime",
            function (data){
                alert("Get success: " + data);
            });
        alert("End");
    }
  </script>
</body>
</html>

ý copy cái code cũ có null nó cũng chạy được @_@ thặc là kì lạ

Văn Dương viết 15:56 ngày 01/10/2018

Mình tạo project empty nên nó không có gì sất.
Máy lại không có mạng chắc phải tải cái jquery về.
Để mình thử lại.


À nó chạy được rồi. Cảm ơn bạn nhiều nhé !

@tntxtnt:
Cho mình hỏi một chút: Về dòng :

<script src="https://code.jquery.com/jquery-3.2.1.min.js">

Thì cái đường dẫn kia nằm ở đâu vì mình tắt toàn bộ mạng đi nó vẫn chạy được.

Dark.Hades viết 16:02 ngày 01/10/2018

Máy bác nó lưu cache rồi nên nó không tải nữa, bác xoá cache đi là mất, nên download nó về local rồi thay bằng đường dẫn tương đối hoặc bằng địa chỉ local của bác

viết 16:02 ngày 01/10/2018

cướp giật solution tự bấm của ta hả

bấm Ctrl-F5 xóa cache là nó chết lại ngay

Văn Dương viết 15:54 ngày 01/10/2018

Ô không chon được 2 solution à
Mình tại offline về rồi.
Add vào project nó lại chết nhăn răng rồi ::)).

Bài liên quan
0