Обратный вызов ожидает функцию. Вы, однако, не передаете функцию. Вы вызываете функцию.
"complete": complete( "3rd" )
, который добавляет вещи, как определено в этой функции. Затем он ничего не возвращает, поэтому он оценивает:
"complete": undefined
Обратите внимание, что передача функции работает без скобок. Э.Г.
"complete": complete
или
"complete": function() { ... } // this is also a function