0

したがって、コントローラー アクションを介してテーブルに行を追加する JS .post 呼び出しがあります。次に、その行の主キーをビューに返します。別のコントローラーに対して行う必要がある 2 番目の .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 呼び出し (キーが使用可能になる場所) の成功ハンドラーを作成し、その成功ハンドラーで 2 番目の 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 に答える