javascript - xhr - xmlhttprequest parameters




La richiesta Ajax restituisce 200 OK, ma viene generato un evento di errore anziché il successo (11)

Ho implementato una richiesta Ajax sul mio sito Web e sto chiamando l'endpoint da una pagina Web. Restituisce sempre 200 OK , ma jQuery esegue l'evento di errore. Ho provato un sacco di cose, ma non sono riuscito a capire il problema. Sto aggiungendo il mio codice qui sotto:

Codice jQuery

var row = "1";
var json = "{'TwitterId':'" + row + "'}";
$.ajax({
    type: 'POST',
    url: 'Jqueryoperation.aspx?Operation=DeleteRow',
    contentType: 'application/json; charset=utf-8',
    data: json,
    dataType: 'json',
    cache: false,
    success: AjaxSucceeded,
    error: AjaxFailed
});
function AjaxSucceeded(result) {
    alert("hello");
    alert(result.d);
}
function AjaxFailed(result) {
    alert("hello1");
    alert(result.status + ' ' + result.statusText);
}

Codice C # per JqueryOpeartion.aspx

protected void Page_Load(object sender, EventArgs e) {
    test();
}
private void test() {
    Response.Write("<script language='javascript'>alert('Record Deleted');</script>");
}

Ho bisogno della stringa ("Record deleted") dopo l'eliminazione riuscita. Sono in grado di eliminare il contenuto, ma non ricevo questo messaggio. È corretto o sto facendo qualcosa di sbagliato? Qual è il modo corretto per risolvere questo problema?


Devi semplicemente rimuovere il dataType: "json" nella tua chiamata AJAX

$.ajax({
    type: 'POST',
    url: 'Jqueryoperation.aspx?Operation=DeleteRow',
    contentType: 'application/json; charset=utf-8',
    data: json,
    dataType: 'json', //**** REMOVE THIS LINE ****//
    cache: false,
    success: AjaxSucceeded,
    error: AjaxFailed
});

Devi solo rimuovere dataType: 'json' dalla tua intestazione se il tuo metodo di servizio Web implementato è nullo.

In questo caso, la chiamata Ajax non prevede di avere un tipo di dati di ritorno JSON.


Ho avuto lo stesso problema. Era perché la mia risposta JSON contiene alcuni caratteri speciali e il file del server non era codificato con UTF-8, quindi la chiamata Ajax considerava che questa non era una risposta JSON valida.


Ho avuto lo stesso problema. Il mio problema era che il mio controller stava restituendo un codice di stato invece di JSON. Assicurati che il tuo controller restituisca qualcosa come:

public JsonResult ActionName(){
   // Your code
   return Json(new { });
}

Ho il problema simile ma quando ho provato a rimuovere il tipo di dati: 'json' ho ancora il problema. Il mio errore è in esecuzione al posto del successo

function cmd(){
    var data = JSON.stringify(display1());
    $.ajax({
        type: 'POST',
        url: '/cmd',
        contentType:'application/json; charset=utf-8',
        //dataType:"json",
        data: data,
        success: function(res){
                  console.log('Success in running run_id ajax')
                  //$.ajax({
                   //   type: "GET",
                   //   url: "/runid",
                   //   contentType:"application/json; charset=utf-8",
                   //   dataType:"json",
                   //   data: data,
                   //  success:function display_runid(){}
                  // });
        },
        error: function(req, err){ console.log('my message: ' + err); }
    });
}

Lo script richiede un ritorno nel tipo di dati JSON.

Prova questo:

private string test() {
  JavaScriptSerializer js = new JavaScriptSerializer();
 return js.Serialize("hello world");
}

Questo è solo per la cronaca da quando mi sono imbattuto in questo post quando cercavo una soluzione al mio problema che fosse simile agli OP.

Nel mio caso è stata impedita la richiesta di jQuery Ajax a causa della politica della stessa origine in Chrome. Tutto è stato risolto quando ho modificato il mio server (Node.js) per farlo:

response.writeHead(200,
          {
            "Content-Type": "application/json",
            "Access-Control-Allow-Origin": "http://localhost:8080"
        });

Mi è costata letteralmente un'ora di sbattere la testa contro il muro. Mi sento stupido ...


Se restituisci sempre JSON dal server (nessuna risposta vuota), dataType: 'json' dovrebbe funzionare e contentType non è necessario. Tuttavia assicurati che l'uscita JSON ...

jQuery AJAX genererà un "parseerror" su JSON valido ma non serializzato!


Un'altra cosa che ha incasinato le cose per me era usare localhost invece di 127.0.0.1 o viceversa. Apparentemente, JavaScript non può gestire le richieste da una all'altra.


Usa il seguente codice per assicurarti che la risposta sia in formato JSON (versione PHP) ...

header('Content-Type: application/json');
echo json_encode($return_vars);
exit;

Vedi questo . È anche un problema simile. Lavorando ho provato

Non rimuovere dataType: 'JSON',

Nota: echo solo JSON Formate in file PHP se usi solo php echo il tuo codice ajax return 200





json