Если вы хотите отправить файл, вам придется перейти с iframe - «обходным путем», описанным здесь здесь , например
. Для вашей проблемы, почему сериализация всегда пуста посмотрите на источник jquery . Тип поля ввода проверяется на это регулярное выражение
/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i
Как вы можете видеть, тип «файл» не является частью этого, и поэтому jquery не будет сериализовать это поле ввода.
в php версии> = 5.1.0 Вы могли использовать array_intersect_key
:
$data = array('personName' => 'John', 'personAge' => 99, 'personId' => 1,
'test' => 23);
$ex = array('personName'=>0, 'personAge'=>0, 'personId'=>0);
var_dump(array_intersect_key($data, $ex));
значения в $ex
не имеют значения, они просто должны присутствовать.
Это - по существу то же как ответ SilentGhost, но это могло бы быть легче, и вероятно немного медленнее.
array_intersect_key($array, array_flip($wantedKeys));