Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Invalid argument for 'pairs' (table expected, got string), but argument is a table?

Asked by 3 years ago

I'm trying to issue a post request via RemoteFunction, but the in pairs() loop is not working.

I'm getting an error trying to tell me im using the incorrect datatype for the 'pairs', but the argument is a table.

Server script:

local http = game:GetService('HttpService')
local database = 'http://boomlings.com/database/'

game.ReplicatedStorage:WaitForChild('IssuePostRequest').OnServerInvoke = function(php, param)
    local data = ''

    for i, v in pairs(param) do
        data = data .. ('&%s=%s'):format(
            http:UrlEncode(i),
            http:UrlEncode(v)
        )
    end

    data = data:sub(2)
    print(data)

    local returned

    local success, eMes = pcall(function()
        returned = http:PostAsync(database..php, data, Enum.HttpContentType.ApplicationUrlEncoded, false)
    end)

    if success then
        return {'Success', returned}
    else
        return {'Error', eMes}
    end
end

Local script:

local CAS = game:GetService('ContextActionService')
local secretC = 'Wmfd2893bg7'

CAS:BindAction('Response', function()
    local response = game.ReplicatedStorage:WaitForChild('IssuePostRequest'):InvokeServer('getGJUserInfo20.php', {
        secret = secretC,
        targetAccountID = 7362432
    })

    if response[1] == 'Success' then
        print(response[2][3])
    else
        warn(response[2])
    end

end, false, 'e')

You are free to correct my Http code, because I am extremely new to it.

1 answer

Log in to vote
1
Answered by
cegberry 432 Moderation Voter
3 years ago

The reason why is that Roblox thinks php is the player, because RemoteEvents and RemoteFunctions automatically fire Player as the first argument, and your setting php to as the parameter for the player, to fix this instead of

game.ReplicatedStorage:WaitForChild('IssuePostRequest').OnServerInvoke = function(php, param)

It should be

game.ReplicatedStorage:WaitForChild('IssuePostRequest').OnServerInvoke = function(player, php, param)
0
Can't believe i forgot that. Thank you! deeskaalstickman649 475 — 3y
Ad

Answer this question