По крайней мере, разверните ваш код из лишнего обработчика дополнительной нагрузки, только в редких случаях вам нужен IIFE внутри обработчика нагрузки
$(document).ready(function(){ // load handler
(function($){ // remove
переместите warnDefault туда, где остановка отправки, если остальная часть кода завершается сбоем, и удалите ненужный мусор:
dataType: 'text', // jQUery will figure this out based on response
type: 'get', // default
contentType: 'application/x-www-form-urlencoded', // only needed for POST
var urlResponse = JSON.parse(data); // if text is left out, JSON is returned
Вот более короткая и чистая версия
$(function() { // shorter version of $(document).ready(function
$('#form').on("submit", function(e) {
e.preventDefault(); // belongs HERE
var callid = $('.callid').val();
var pin = $('.pin').val();
var urlFinal = callid + '/' + pin;
$.ajax({
url: 'http://URLHERE/getHash/' + urlFinal,
success: function(data, textStatus, jQxhr) {
console.log("WORKS! " + data.streamFileUrl); // is already JSON
$('.overlay').show();
playVideo(urlResponse);
},
error: function(jqXhr, textStatus, errorThrown) {
console.log('INCORRECT DETAILS ');
$('.incorrect').html(errorThrown).show()
}
});
});
});