Hatanın nedeni, PHP tarafında $_POST['allData'] değişkeninin bir string olarak gelmesi ve foreach içinde dizi gibi kullanılmaya çalışılmasıdır.
JavaScript’te FormData.append() fonksiyonu ile diziyi (aData) eklediğinde, bu dizi otomatik olarak bir string haline geliyor. Yani PHP tarafına şu şekilde geliyor:
$_POST['allData'] = "1,2,3,4,5"; // string formatında
Bu yüzden foreach ($array as $key => $value) satırı hata veriyor çünkü foreach bir array veya object bekliyor, ama senin elinde string var.
PHP tarafında $_POST['allData'] değerini JSON olarak yolla ve json_decode() ile array’e çevir.
myformData.append('allData', JSON.stringify(aData)); // DİZİYİ JSON FORMATINDA GÖNDER
PHP tarafında json_decode() ile array’e çevir:
$array = json_decode($this->guvenlik($_POST['allData']), true); // JSON'u array olarak al
echo "$key['orderId'] => $val <br>";
echo "$key['merchantId'] => $val <br>";
şeklinde döngüye sokmayı denediniz mi ? Yani dizilerde istediğiniz değeri almak için $key['X'] şeklinde elemanı seçebiliyordunuz.
Default olarak her tarayıcıda soldan ( yanlış hatırlamıyorsam ) 8 px lik bir margin boşluğu oluyordu. Nav bar ın soldan marginini -8 px yaparak deneyebilirsin.
Çok fazla bilgim yok öğrenme aşamasındayım ama denemekte fayda var.
position : relative denedin mi ?