ahí te funciona
functionCallback.var1 porque ahi le estás asignando el json parseado a objeto. fíjate que en realidad
functionCallback no está actuando como un callback (una función), sino como una variable normal. en este caso, aparenta que
llamaAjax determina que el dato es un json, lo parsea a objeto y asigna a la variable
functionCallback. como antes se mencionó, se supone que en jsonp la respuesta del servidor es el json envuelto en una invocación a un callback. en tu código, estas asignando.
Código:
// notese el operador de asignacion ;
echo($_POST['callback']."=(".json_encode($arr).")");
sobre el error de seguridad, no hay detalles suficiente para determinar su causa. solo puedo sospechar que estas haciendo la prueba en local o que la URL apunta a un dominio distinto. en caso de ser un dominio distinto, debes cargar el jsonp creando un elemento SCRIPT, indicar la URL en src y agregarlo al documento mediante javascript.