![](/img/trans.png)
[英]I have tried to drag and drop an element. Why won't my code work properly?
[英]I have tried every method to return JSON encoded PHP objects - why won't it work?
解:
基本上,沒有一個。 $ _Sock是一個資源,因此不能通過json_encode()傳遞。 不幸的是,連接是通過$ .post建立的,這意味着它不能跨多個頁面保存(除非像Jon建議的那樣使用應用程序服務器。)
每次建立連接都沒有特別的不便; 它只是一種可以容忍的煩惱。 我將不得不依賴於每次重新建立連接的模型,以便通過RCON服務器發送命令。
感謝Ryan和Jon的巨大幫助!
原帖:
我嘗試過dataType: 'json'
, $.parseJSON()
和Header("Content-type: application/json")
,但是當我嘗試返回一個json_encode()
數組或對象時,我遇到了這個錯誤:
Warning: json_encode(): type is unsupported, encoded as null
這是JavaScript $ .post:
$.post("rcon.php",
{
ip:server.ip,
port:server.rcon.port,
pwd:server.rcon.pwd
},
function(data){
alert(data);
$("#output").val($("#output").val()+data+"\n");
});
...這里是返回數據的PHP:
$r = new minecraftRcon($rconServer, $rconPort, $rconPass);
if ($r->Auth()) { $response = "Authenticated."; } else { $response = "Authentication failed."; }
echo json_encode($r);
我已經在這3個小時了。 我根本不明白我需要做些什么才能讓它發揮作用。 我嘗試過gettype
,它確認數據確實是一個對象。 json_encode
應該接受它,但它“不受支持”。 請幫助 - 我失去了理智。
后續代碼var_dump($ R):
<pre class='xdebug-var-dump' dir='ltr'>
<b>object</b>(<i>minecraftRcon</i>)[<i>1</i>]
<i>public</i> 'Password' <font color='#888a85'>=></font> <small>string</small><font color='#cc0000'>'derp'</font> <i>(length=4)</i>
<i>public</i> 'Host' <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'localhost'</font> <i>(length=9)</i>
<i>public</i> 'Port' <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'25575'</font> <i>(length=5)</i>
<i>public</i> '_Sock' <font color='#888a85'>=></font> <b>resource</b>(<i>4</i><font color='#2e3436'>,</font> <i>stream</i>)
<i>public</i> '_Id' <font color='#888a85'>=></font> <small>int</small> <font color='#4e9a06'>1</font>
</pre>
這基本上就是我要做的事情:
以上所有操作都將通過一個.php頁面完成,輸出會被警告並打印到textarea(有時根本不起作用)。
正如文檔所述,您無法使用json_encode
對資源類型進行編碼。 當前代碼嘗試這樣做是因為類minecraftRcon
公開屬性$_Sock
其值是資源。
但是,目前還不清楚為什么你的JS / PHP代碼不能整體運行。 由於您無法從PHP訪問(或甚至查看)任何“內部”資源值,因此幾乎可以肯定您並未嘗試從JS執行此操作,因此雖然警告有效並且您應該修復它,但它可能不會對你目前的問題充滿信心。
您不能直接在json_encode()
編碼對象。
您需要將對象轉換為數組,您可以使用以下內容:
$data = get_object_vars($r)
並編碼$data
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.