我真的很努力与此,并会提出任何建议。
我有这个字段
<input id="scanInput" type="text" placeholder="SCAN" class="form-control" />
当字段更改时我想为此进行ajax调用,所以我尝试了
<script>
$("#scanInput").change(function () {
console.log('ye');
$.getJSON("?handler=GetPartDetails", function (data) {
//Do something with the data.
console.log('yay?');
}).fail(function (jqxhr, textStatus, error) {
var err = textStatus + ", " + error;
console.log("Request Failed: " + err);
});
});
</script>
我的PageModel
使用此方法的地方
[HttpPost]
public IActionResult GetPartDetails()
{
return new JsonResult("hello");
}
,相关页面的网址为/packing/package/{id}
现在,当我更改输入值时,我在控制台上看到ye
,并且可以看到状态为 200的名为http://localhost:7601/Packing/Package/40?handler=GetPartDetails
(我认为正确的URL?)的网络。
但是我在GetPartDetails
中的断点从未命中,并且在控制台中看不到yay?
。
我还从fail
处理程序中看到了此消息:
请求失败:parsererror,语法错误:JSON.parse:JSON数据第3行第1列的意外字符
但是我什至没有传递任何JSON数据...为什么必须这样做 我也尝试过这种方式:
$.ajax({
type: "POST",
url: "?handler=GetPartDetails",
contentType : "application/json",
dataType: "json"
})
但我知道
XML解析错误:找不到元素 位置:http://localhost:7601/Packing/Package/40?handler=GetPartDetails 第1行,第1列:
我也尝试过
$.ajax({
url: '/?handler=Filter',
data: {
data: "input"
},
error: function (ts) { alert(ts.responseText) }
})
.done(function (result) {
console.log('done')
}).fail(function (data) {
console.log('fail')
});
有动作
public JsonResult OnGetFilter(string data)
{
return new JsonResult("result");
}
但是在这里我在控制台中看到了结果文本,但是我的断点从不执行操作,也没有网络错误......... 我在做什么错了?
答案 0 :(得分:0)
对不起,我未发布此答案,我希望在评论部分中这样做,但我还没有特权。
您的PageModel
看起来不是这样吗?
[HttpPost]
public IActionResult GetPartDetails() {
return new JsonResult {
Text = "text", Value = "value"
};
}
答案 1 :(得分:0)
我以某种方式找到了可以使用的设置,但我不知道为什么。
PageModel
[HttpGet]
public IActionResult OnGetPart(string input)
{
var bellNumber = input.Split('_')[1];
var partDetail = _context.Parts.FirstOrDefault(p => p.BellNumber == bellNumber);
return new JsonResult(partDetail);
}
剃刀页
$.ajax({
type: 'GET',
url: "/Packing/Package/" + @Model.Package.Id,
contentType: "application/json; charset=utf-8",
dataType: "json",
data: {
input: barcode,
handler: 'Part'
},
success: function (datas) {
console.log('success');
$('#partDescription').html(datas.description);
}
});
答案 2 :(得分:0)
对于此问题,它与Razor页面处理程序有关。对于default handler routing。
HTTP动词的处理程序方法(“未命名”处理程序方法)遵循 约定:On [Async](附加Async是可选的,但 建议用于异步方法)。
对于您的原始帖子,请按照以下步骤操作:
GetPartDetails
更改为OnGetPartDetails
,其处理程序为PartDetails
,http动词为Get
。 [HttpPost]
之前已定义Get
动词的OnGet
。 客户请求
@section Scripts{
<script type="text/javascript">
$(document).ready(function(){
$("#scanInput").change(function () {
console.log('ye');
$.getJSON("?handler=PartDetails", function (data) {
//Do something with the data.
console.log('yay?');
}).fail(function (jqxhr, textStatus, error) {
var err = textStatus + ", " + error;
console.log("Request Failed: " + err);
});
});
});
</script>
}
您还可以通过点击上面的链接来自定义规则,以替换默认的页面应用模型提供者