0

所以,我有一个 JS .post 调用,它通过控制器操作向表中添加一行。然后它将该行的主键返回给视图。我需要将该整数插入数据中,以便我需要对另一个控制器进行第二次 .post 调用。

更新的 Javascript 首先是看看我的 Javascript:

   var result = $.post('/Question/CreateSimpleQuestion/', (data), function (result) {
                                   $.post('/Question/CreateSimpleQuestionChoice/', ({
                                                                 "QuestionId":result,
                                                                 "DisplayText": text,
                                                                 "OrderNumber": order,
                                                                 "is_correct": false}),
                                                                  null, 'application/json');
                }, 'application/json');

这些是被调用的控制器动作:

        //
    // POST: /Question/CreateSimpleQuestion

    [HttpPost]
    public JsonResult CreateSimpleQuestion(Question question)
    {
        question.is_counted = true;
        question.DateCreated = DateTime.Now;
        db.Questions.Add(question);
        db.SaveChanges();
        return Json(question.QuestionId, JsonRequestBehavior.AllowGet);
    }

    //
    // POST: /Question/CreateSimpleQuestion

    [HttpPost]
    public JsonResult CreateSimpleQuestionChoice(QuestionChoices choice)
    {
        db.QuestionChoices.Add(choice);
        db.SaveChanges();

        return Json(choice, JsonRequestBehavior.AllowGet);
    }
4

1 回答 1

2

您为第一个 ajax 调用(密钥可用)创建一个成功处理程序,在该成功处理程序中,您进行第二个 ajax 调用,然后您可以使用它传递该密钥。

var result = $.post('/Question/CreateSimpleQuestion/', data, function(result) {
    // make your second ajax call here and you can use the result of the first
    // ajax call here
    var dataq = { 
        "QuestionId": result.QuestionId,   // data from first ajax call here
        "DisplayText": text, 
        "OrderNumber": order, 
        "is_correct": false 
    };
    $.post('/Question/CreateSimpleQuestionChoice/', dataq, function(result2) {
        // examine result of second ajax function here
        // code goes here
    }, 'application/json');

}, 'application/json');

这是一个嵌入了控制台调试语句的版本,因此您可以在调试控制台中跟踪它的进度,尽管我个人更喜欢设置断点并检查变量。

console.log("Position 1");
console.log(data);
var result = $.post('/Question/CreateSimpleQuestion/', data, function(result) {
    // make your second ajax call here and you can use the result of the first
    // ajax call here
    var dataq = { 
        "QuestionId": result.QuestionId,   // data from first ajax call here
        "DisplayText": text, 
        "OrderNumber": order, 
        "is_correct": false 
    };
    console.log("Position 2");
    console.log(dataq);
    $.post('/Question/CreateSimpleQuestionChoice/', dataq, function(result2) {
        // examine result of second ajax function here
        // code goes here
        console.log("Position 3");
        console.log(result2);
    }, 'application/json');

}, 'application/json');
于 2013-11-01T04:46:28.437 回答