我的AJAX api函数有问题:
var baseURL = "http://localhost:8208/api/";
function updateMultipleQuestions(questionsPrototype, callback) {
var url = baseURL + "Questions?isMultiple=true";
$.ajax({
url: url,
type: 'PUT',
data: questionsPrototype,
dataType: 'json',
contentType: 'application/json',
statuscode: {
200: function (output) {
callback(output);
},
201: function (output) {
callback(output);
}
}
});
}
questionsPrototype是MultiQuestion类型的一个对象,它是一个问题数组:
function Question()
{
this.ID = 0;
this.Index = 0;
this.ImageURL = "imgurl_?";
this.Title = "";
this.QuestionText = "";
this.SectionID = 0;
this.CommentLength = 0;
this.Required = false;
this.NumberOfAllowedAnswers = 0;
this.NumberOfAllowedCharacters = 63;
this.OptionChoices = [];
this.QuestionType = 0;
}
function MultiQuestions()
{
this.Questions = [];
}
该数据应该发送给控制器:
// PUT: api/Questions?isMultiple=true
[ResponseType(typeof(MultiQuestionActivityModel))]
public IHttpActionResult PutQuestion([FromUri] bool isMultiple, MultiQuestionActivityModel Questions)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
using (var uow = new UnitOfWorkFactory().Create())
{
var QuestionActivity = new QuestionActivity(uow);
if (QuestionActivity.MultiQuestionSave(Questions) > 0)
{
return Ok(Questions);
}
else
{
// Handle this
return ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Could not save questions")); ;
}
}
}
现在的问题是,当我调用api函数updateMultipleQuestions时,正确的数据被发送到函数中,但是从ajax调用到控制器,数据变为null(MultiQuestionActivityModel Questions)(在调试模式下检查)。
我已经使用相同的数据测试了Postman中的url并且调用正常,这使得我认为问题出在AJAX调用中,可能其中一个标头参数可能使用错误了?
我对此很新,可能忽略了一些东西。 先谢谢 / Janmumrik
答案 0 :(得分:2)
在您的Ajax调用中,您说您发送的数据类型是json,但是您没有发送json。也许您可以尝试在数据中使用JSON.stringify()
: