你好,我在通过ajax向asp.net控制器发送数据时遇到问题。当我试图在opera检查器中查看问题时,我在jquery第8720行得到了服务器500错误。xhr.send((s.hasContent&&s.data)||null);以下是我的代码示例:Html:
<div class="top-row">
<div class="field-wrap">
<label>
<span class="req"></span>
</label>
<input class="text-center" type="text" required autocomplete="off" name="url" id="url" />
</div>
</div>
<button type="submit" class="button button-block" name="sendIT" id="sendIT">Save</button>
</div>
Javascript:
var button1 = document.getElementById("sendIT");
function LoginButton1OnClick() {
var text = $('#url').val();
alert(text);
$.ajax({
type: 'POST',
url: '/Book/TestBook',
crossDomain: true,
data: text,
success: function () {
alert('success');
}, error: function (data) {
alert("Error");
}
});
}
button1.addEventListener("click", LoginButton1OnClick);
C#:
[HttpPost]
在此输入代码
public ActionResult TestBook(string test)
{
var s1 = test;
return View();
}
您需要将数据作为对象发布
$.ajax({
type: 'POST',
url: '/Book/TestBook',
crossDomain: true,
data: {test: text},
success: function () {
alert('success');
}, error: function (data) {
alert("Error");
}
});
您得到的错误500是因为ajax POST请求中的"数据"格式错误。您需要将数据作为对象发送:
Javascript
$.ajax({
type: 'POST',
url: '/Home/TestBook',
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify({test: text }),
success: function (data) {
alert('success');
}, error: function (data) {
alert("Error");
}
});
请注意,javascript中的"test"参数需要在控制器中使用完全相同的名称。