Проблема с передачей объекта на сервер с помощью jQuery.Ajax () - PullRequest
0 голосов
/ 16 февраля 2010

Я пытаюсь реализовать тот же код, который был упомянут в этот вопрос

В настоящее время у меня есть следующий код:

var pagePath = window.location.pathname;

var paramList = '';
if (paramArray.length > 0) {
 for (var i = 0; i < paramArray.length; i ++) {
  if (paramList.length > 0) paramList += ',';
  paramList += "{'id':'" + paramArray[i].id + "', 
                       'collapsed':'" + paramArray[i].collapsed + "', 
                       'order':'" + paramArray[i].order + "', 
                       'column':'" + paramArray[i].column + "'}";
 }
}
paramList = '[' + paramList + ']';

$.ajaxSetup({ cache: false });
//Call the page method  
$.ajax({
 type: "POST",
 url: pagePath + "/" + fn,
 contentType: "application/json; charset=utf-8",
 data: "{'items': **'**" + $.toJSON(paramList) + "**'**}",

dataType: "json", успех: успех, ошибка: errorFn });

Я пытаюсь передать эти данные в WebMethod

[WebMethod]
public static String SaveData(Dictionary<String, Object>[] items)

Проблема в том, что я получаю сообщение об ошибке «500 Internal Server Error». Я почти уверен, что тип данных вызывает проблему, но просто не могу понять это. Есть идеи?

1 Ответ

0 голосов
/ 16 февраля 2010

Оформлен ли ваш сервис атрибутом [ScriptService]?

а что там со звездочками? это какой-то новый макрос, на котором я не получил записку?

"{'items': **'**" + $.toJSON(paramList) + "**'**}"

попробовать

"{'items':" + $ .toJSON (paramList) + "}"

На мой взгляд, вы уже создаете JSON. нет необходимости в toJSON

попробуйте заменить одинарные кавычки на двойные. например,

'{"items": ' + paramList + '}'

Ваши данные должны выглядеть следующим образом

'{
    "items": [{
        "id": "1",
        "collapsed": "0",
        "order": "0",
        "column": "column2"
    },
    {
        "id": "2",
        "collapsed": "1",
        "order": "1",
        "column": "column2"
    },
    {
        "id": "3",
        "collapsed": "0",
        "order": "0",
        "column": "column3"
    }]
}'

встроенный

'{ "items": [{ "id": "1", "collapsed": "0", "order": "0", "column": "column2" }, { "id": "2", "collapsed": "1", "order": "1", "column": "column2" }, { "id": "3", "collapsed": "0", "order": "0", "column": "column3" }]}'



var paramList = "";
if (paramArray.length > 0) {
 for (var i = 0; i < paramArray.length; i ++) {
  if (paramList.length > 0) paramList += ",";
  paramList += '{"id":"' + paramArray[i].id + '", 
                       "collapsed":"' + paramArray[i].collapsed + '", 
                       "order":"' + paramArray[i].order + '", 
                       "column":"' + paramArray[i].column + '"}';
 }
}
paramList = "[" + paramList + "]";

$.ajaxSetup({ cache: false });
//Call the page method  
$.ajax({
 type: 'POST',
 url: pagePath + '/' + fn,
 contentType: 'application/json; charset=utf-8',
 data: '{"items":' + paramList + '}',  // the rest of your function is missing
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...