Я пытаюсь передать несколько значений для одного имени поля в вызов ajax:
<form>
<input type="hidden" name="fieldName" value="MyValue1">
<input type="hidden" name="fieldName" value="MyValue2">
<input type="hidden" name="fieldName" value="More data...">
<input type="hidden" name="fieldName" value="More data...">
<input type="hidden" name="fieldName" value="More data...">
<input type="hidden" name="fieldName" value="More data...">
</form>
Я не могу просто отправить форму, потому что отправка должна быть выполнена с использованием ajax по причинам, которые не имеют отношения к этой ситуации.
Когда я сериализирую эти данные формы, я получаю следующее:
formData: Object
fieldName: Array[6]
0: "MyValue1"
1: "MyValue2"
2: "More data..."
3: "More data..."
4: "More data..."
5: "More data..."
length: 6
Пока это выглядит хорошо для меня. Вот где я отправляю это на сервер:
$.post("/MyHandler.axd", formData, function (data) {
// etc.
});
На сервере код, который я не контролирую, делает следующее:
string[] values = request.Form.GetValues("fieldName");
В этот момент values
равно нулю. Однако, если я сделаю это:
string[] values = request.Form.GetValues("fieldName[]");
values
содержит мой массив длины 6 с правильными данными и т. Д.
Я понимаю, что здесь происходит, но я не знаю, почему и как я могу обойти это. Можно ли вытащить fieldName
вместо fieldName[]
без отправки формы?
Спасибо.
РЕДАКТИРОВАТЬ: После попытки предложений @ raymondralibi, я теперь получаю следующее:
Для первого предложения (getSerializeArray($(this).closest('form'))
) я получаю это:
formData: Object
: undefined
__proto__: Object
И для второго (getSerializeArray2($(this).closest('form'))
) я получаю это:
formData: Array[1]
0: Object
: undefined
__proto__: Object
length: 1
__proto__: Array[0]
Возможно, я называю это неправильно; Какие-нибудь мысли? Еще раз спасибо.