Arduino BLE and website communication issues; SerialCharacteristic not changing?

For a group project I was trying to use the Arduino BLE to connect to my computer, which would be connected to a website that would then return an appropriate value to the Arduino BLE. The issue occurs after connecting to the BLE, because my website showed basically no signs of responding to my BLE’s messages at all. After a bit of testing and logging, I found that the issue was that I was using an eventListener in my javascript to detect whenever the BLE sends a message, but that whenever that message was sent, it does not detect anything because the SerialCharacteristic does not change.

I tried changing some random stuff, from changing the ports of the BLE, to readjusting how I’m sending the strings, but I have no clue how to change the SerialCharacteristic. When I tried using the bt.write() function, it said that apparently bt.write() function didn’t exist. I asked my friend who had used the BLE before and they said that bt.print() worked for them, so I really don’t know why the SerialCharacteristic refuses to change. I can tell that the BLE is connected because of logs, but otherwise I have no clue why things are malfunctioning. Also, during testing there was one random time when the message did get through, but I wasn’t logging stuff at the time and I failed to recreate it.
Relevant JS code:

const serviceUUID = 0xFFE0;
const serialUUID = 0xFFE1;

let device;
let serialCharacteristic;

async function connect(){

    device = await navigator.bluetooth.requestDevice({
        filters: [{
            services: [serviceUUID]
        }],
    });
    console.log("before server");
    const server = await device.gatt.connect();
    const service = await server.getPrimaryService(serviceUUID);

    serialCharacteristic = await service.getCharacteristic(serialUUID);
    console.log(serialCharacteristic);
    await serialCharacteristic.startNotifications();
    console.log("connected");
    serialCharacteristic.addEventListener('characteristicvaluechanged', read);

    document.getElementById('connect').removeEventListener("click", connect);
    document.getElementById('connect').addEventListener("click", disconnect);
    document.getElementById('connect').textContent = "Disconnect";
}

Relevant Arduino Code :

#include <SoftwareSerial.h>

String screen;
String btdata;
String serialdata;
SoftwareSerial bt(10, 11);

void setup() {
    bt.begin(9600);
}
void loop() {
    ...//irrelevant code
    Serial.println(screen)
    bt.print(screen);
       
    while (bt.available() == 0) { //I think bt.available() returns the number of characters ready to be read, so essentially I'm waiting until there's something being returned
        Serial.println(bt.available());
        delay(100);
    }
    btdata = bt.read();
    Serial.println(btdata);
}