我有这个错误。我总是对这个引号有问题:(
<a class="btn-xs btn-info" title="Login As User" onclick="genericAjax("/Admin/LoginAsUser.aspx/LoginAs",{"UserUId":"854c46fc-6e50-4574-a103-16e16f24bf38"})" href="#">Login</a>
function genericAjax(url, data) {
$.ajax({
type: "POST",
url: url,
data: data,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) { }
});
}
[WebMethod]
public static object LoginAs(string UserUId)
{
//somecode
}
Button Creator Javascript
var param = '{';
for (t in CustomButtonJson[i].param)
param += '"' + CustomButtonJson[i].param[t]["Key"] + '":"' + rowData[CustomButtonJson[i].param[t]["Value"]] + '",';
param = param.substring(0, param.length - 1) + '}';
var ajax = 'genericAjax("' + CustomButtonJson[i].url + '/' + CustomButtonJson[i].ajaxMethod + '",' + param + ')';
button +=
"<a class='btn-xs btn-info' href='#' onclick=" + ajax + " " +
"title='" + CustomButtonJson[i].title + "'>" + CustomButtonJson[i].name + "</a>";
答案 0 :(得分:2)
onclick='genericAjax("/Admin/LoginAsUser.aspx/LoginAs",{"UserUId":"854c46fc-6e50-4574-a103-16e16f24bf38"})'
您使用双引号括起onclick
事件,但也将参数传递给genericAjax
,因此JS无法区分这两种用法。
相反,用一组不同的字符(单引号)包装整个东西(我想你也可以选择在这里转义引号,但这是我能看到的最简单的解决方案。)
有趣的是 - StackOverflow的代码片段的着色完全说明了我正在解释的内容。将上面提出的解决方案的颜色与以下(您的)进行比较,您可以看到发生了什么:
onclick="genericAjax("/Admin/LoginAsUser.aspx/LoginAs",{"UserUId":"854c46fc-6e50-4574-a103-16e16f24bf38"})"
答案 1 :(得分:0)
答案是:
<form id="form1" runat="server">
<div>
<a class="btn-xs btn-info" title="Login As User" id="btnLogin" href="#">Login</a>
<a class="btn-xs btn-info" title="Login As User" onclick="genericAjax('/Default.aspx/LoginAs', '{"UserUId":"bbbb"}')" href="#">Login</a>
</div>
<script>
$(document).ready(function () {
$("#btnLogin").click(function () {
genericAjax('/Default.aspx/LoginAs', '{"UserUId":"aaaa"}');
});
});
function genericAjax(url, data) {
$.ajax({
type: "POST",
url: url,
data: data,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) { alert(data.d); }
});
return false;
}
</script>
</form>