6 回答

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
我看到您正在使用 Razor 頁面。razor 頁面模型中的方法不是路由方法(它不能通過請(qǐng)求路由來調(diào)用),這就是為什么嘗試發(fā)送請(qǐng)求將不起作用ajax,Index\FindUser并且服務(wù)器返回的錯(cuò)誤將是 404 not found。
或者,您可以使用剃刀頁面處理程序。
在您Index.cshtml.cs將方法重命名FindUser()為OnGetFindUser()或OnGetFindUserAsync()該方法是否為異步方法時(shí)。
然后,您可以通過向 發(fā)送請(qǐng)求來調(diào)用此方法"Index?handler=FindUser"。
// Note the difference in method name
public IActionResult OnGetFindUser()
{
? ? return new JsonResult("Founded user");? ? ? ? ??
}
function findUsers() {
? $.ajax({
? ? type: 'GET',
? ? // Note the difference in url (this works if you're actually in Index page)
? ? url: '?handler=FindUser',
? ? success: function (data) {
? ? ? alert(data);
? ? },
? ? error: function (error) {
? ? ? alert("Error: " + error);
? ? }
? })
}

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
我還不是很有經(jīng)驗(yàn),我去年才開始編程,但我希望我能幫上一點(diǎn)忙。
我也有類似的問題,但我無法直接從 JavaScript 執(zhí)行函數(shù)。您也許可以創(chuàng)建對(duì) C# 的 API 調(diào)用并使 API 執(zhí)行您想要的功能,然后將數(shù)據(jù)返回給客戶端。
如果我沒有誤解的話,您希望用戶鍵入一些文本,然后根據(jù)鍵入的文本從數(shù)據(jù)庫返回一個(gè)列表。
您可以在輸入標(biāo)簽中使用 onChange,每次更改時(shí),它都會(huì)向服務(wù)器執(zhí)行 API 請(qǐng)求,服務(wù)器將搜索您需要的任何內(nèi)容并將其作為 json 返回。然后在 JavaScript 中,解析數(shù)據(jù)并將其放入 select 標(biāo)記中。
希望能幫助到你。

TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個(gè)贊
好的,首先,您在 javascript 函數(shù)中調(diào)用 jquery。
從 ajax 調(diào)用控制器操作方法非常簡(jiǎn)單。
您需要確定請(qǐng)求類型、url、返回的數(shù)據(jù)類型、傳遞的參數(shù)等,然后在控制器操作和 ajax 請(qǐng)求成功和錯(cuò)誤函數(shù)上設(shè)置斷點(diǎn)。然后您將能夠看到它成功或失敗的原因。
我會(huì)這樣做的方式是給輸入一個(gè) id,然后當(dāng)用戶鍵入文本時(shí)捕獲事件。
不要混淆 jquery 和 javascript。
Jquery 是一個(gè)將 javascript 封裝在其中的框架。
Javascript 是母語。

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊
您可以像這樣使用 onkeyup 或 onblur
onblur:當(dāng)你離開輸入框時(shí),觸發(fā)一個(gè)函數(shù)
onkeyup:當(dāng)用戶在輸入域中松開一個(gè)鍵時(shí)觸發(fā)的函數(shù)
然后像這樣修改你的代碼
html文件:
<input type="text" class="form-control" id="username" oninput="findUsers()" />
js
function findUsers() {
var username= document.getElementById("username").value;
$.ajax({
type: 'GET',
url: '/Home/FindUser
dataType: 'json',
data: {username},
success: function (data) {
console.log(data);
},
error: function (error) {
console.log(error);
}
});
}
你必須返回這樣的東西。您正在使用 void 關(guān)鍵字,因此它不會(huì)向 FE 端返回任何內(nèi)容
public JsonResult FindUser(string username)
{
var object = {
// something here
}
return Json(object);
}

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個(gè)贊
像這樣更改您的 API:
public bool FindUser(string value)
{
if (value == "Joe")
return true;
else
return false;
}
然后這樣稱呼它:
<script type="text/javascript">
function findUsers() {
var value = document.getElementById("value").value;
$.ajax({
type: 'GET',
url: '/Home/FindUser,
data: value,
dataType: 'json',
success: function (data) {
alert(data);
},
error: function (error) {
alert(error);
}
});
}
</script>
<br />
<input type="text" class="form-control" id="value" oninput="findUsers()" />

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以通過向 Index.cshtml 添加少量?jī)?nèi)容來準(zhǔn)確地調(diào)用方法。第一行可能是:
@page "{handler?}"
然后從ajax調(diào)用:
url:'/index/FindUser'
在 Index.cshtml.cs 調(diào)用方法中:
void OnGetFindUser(){}
- 6 回答
- 0 關(guān)注
- 304 瀏覽
添加回答
舉報(bào)