2016-10-04 58 views
0

我很困惑。我有一個JavaScript函數發佈到PHP函數。 PHP在mPicker上說「undefined index」。然而,如果我在同一個函數mPicker內調用var_dump顯然是可見的。雖然在同一函數中的var_dump顯示數據,但在PHP函數中不能工作

console.log

我也跑在JavaScript警告客戶端,以確保表單數據是序列化,它也表明,mPicke [R確實有一個值。然而,PHP中的這一行返回錯誤:

$es=$_POST["mPicker"]; 

這只是你所有的緣故。代碼的較長版本測試SQL注入。

而且在Xdebug的錯誤:

php error in xdebug

的JavaScript代碼:

$.post("./php/adates.php", { atype: apttype, data: $("#apptForm").serialize() }) 
.done(function(data) { 
    alert(data); 
}); 

多的PHP函數代碼:

if (isset($_POST["atype"]) && !empty($_POST["atype"])) { 
    $typ = test_input($_POST['atype'], $con); 
} else { 
    echo "error ln 6: typ is undefined."; 
} 

$es=$_POST["mPicker"]; 
echo $es; 
exit; 

test_input的功能是我提到SQL注入測試和ju st進行測試,在mPicker的帖子上暫時省略。如您所見,行$_POST["atype"]轉義錯誤,並在PHP函數中完美解決。我知道我很累,一定會錯過一些愚蠢的東西。幫助,任何人!

+0

第一次加載頁面時,$ _POST ['mpicker']將不會被設置 - 所以你會得到一個錯誤或警告。以與測試atype相同的方式測試mPicker。 – user2182349

+4

在我看來,你只發布兩個字段,一個叫'atype',另一個叫'data'。 – nnnnnn

+0

'!empty'就足夠了,'isset'就不需要了。 – chris85

回答

1

嘗試使用jQuery「Ajax」的,而不是「後」

$.ajax({ 
    type: 'POST', 
    url: url, 
    data: data, 
    dataType: "html", 
    success: function(html){ 
    console.log(html) 
    } 

}); 

,並設置數據類型爲「HTML」,然後在PHP中使用「回聲」或「var_dunmp」,你可以看到在烏爾數據控制檯

+0

對不起,「var_dump」不是「var_dunmp」 –

+0

我曾試過ajax,結果相同。但我發現問題是我發送兩個單獨的變量(一個是序列化表單數據)的方式。所以我在ajax調用之前添加了這一行: var data =「atype =」+ apttype +「&」+ $(「#apptForm」)。serialize();' 現在,謝謝。 – jazcam

+0

嗯,我搞砸了迷你格式。抱歉。 – jazcam

相關問題