500 आंतरिक सर्वर त्रुटि में JQuery Ajax पोस्ट परिणाम


81

मैं इस AJAX पोस्ट को करने की कोशिश कर रहा हूं, लेकिन किसी कारण से मुझे सर्वर 500 त्रुटि मिल रही है। मैं इसे नियंत्रक में हिट ब्रेक अंक देख सकता हूं। तो समस्या कॉलबैक पर लगती है। किसी को?

$.ajax({
    type: "POST",
    url: "InlineNotes/Note.ashx?id=" + noteid,
    data: "{}",
    dataType: "json",

    success: function(data) {
        alert(data[1]);
    },
    error: function(data){
        alert("fail");
    }
});

यह वह स्ट्रिंग है जिसे लौटाया जाना चाहिए:

{status:'200', text: 'Something'}

.ashx = .NET प्लेटफ़ॉर्म? जावा के साथ इसका क्या करना है?
मैट बी

क्या ".axax" के सामने $ साइन या jQuery के उपसर्ग के बिना कॉल को सही ढंग से करना संभव है?
सिनान

हां .. मैं jQuery.noConflicts () का उपयोग कर रहा हूं। उपसर्ग सही है। जैसा मैंने कहा। यह अनुरोध करता है .. लेकिन त्रुटि वापस आ जाती है।
निक

यहाँ पोस्ट की जाँच करें Developersnote.com/2014/01/…
shamcs

@Shamcs से ऊपर दिए गए लिंक में अंत में एक स्ट्रिंग है जो इसे अमान्य बनाता है। सही लिंक Developersnote.com/2014/01/…
Erenor Paz

जवाबों:


68

मुझे संदेह है कि सर्वर विधि आपके ब्रेकपॉइंट को पास करने के बाद अपवाद फेंक रही है। सर्वर से आपको मिल रही वास्तविक प्रतिक्रिया को देखने के लिए फ़ायरफ़ॉक्स / फायरबग या IE8 डेवलपर टूल का उपयोग करें। यदि कोई अपवाद है, तो आपको YSOD html मिल जाएगा, जिससे आपको यह पता लगाने में मदद मिलेगी कि कहाँ देखना है।

एक और बात - आपकी डेटा संपत्ति {} नहीं "{}" होनी चाहिए, पूर्व एक खाली वस्तु है जबकि बाद वाला एक स्ट्रिंग है जो क्वेरी पैरामीटर के रूप में अमान्य है। यदि आप कोई डेटा पास नहीं कर रहे हैं, तो अभी तक इसे छोड़ दें।


2
आपका पहला वाक्य भ्रामक है (500 त्रुटि का अर्थ है क्लाइंट-साइड को कम करना)। इससे पहले कि मैं जवाब को और अधिक अच्छी तरह से पढ़ पाऊं, मैंने लगभग इसके लिए आपको नीचे उतारा। आप थोड़ा स्पष्ट करना चाह सकते हैं।
मच २

4
सर्वर से वास्तविक प्रतिक्रिया देखने के लिए fiddler2.com भी बहुत उपयोगी है।
ग्लेन लिटिल

: ओ कुछ क्रोम देव उपकरण वास्तव में कम हो जाता है!
जिमी

1
वास्तव में आप इसे क्रोम में डीबग कर सकते हैं, विवरण के लिए इस उत्तर की जांच करें stackoverflow.com/a/21786593/14533
Pixelomo

33

यदि कोई कोडिनेटर फ्रेमवर्क का उपयोग करता है, तो समस्या csrf सुरक्षा कॉन्फिग सक्षम के कारण हो सकती है।


7
मैं अभी कुछ मिनट पहले इस समस्या में गया था ... आपके उत्तर ने मुझे संकेत दिया :) शायद दूसरों के लिए इससे बचने के लिए इसे जोड़ना डेटा में इस समस्या को हल करता है: <? = $ This-> सुरक्षा-> get_csrf_token_name ()? >: '<! = $ यह-> सुरक्षा-> get_csrf_hash ()?>'
सूप दाता

शुक्रिया, बोनफायर में इस पर अटक गया और पता नहीं है कि CodeIgniter अच्छी तरह से अभी तक पता लगाने के लिए पर्याप्त है।
एंडी

19

मुझे अभी भी यह समस्या थी, भले ही मैं अपने मामले में इसका कारण नहीं खोज सका, जब से बदल रहा POSTथा GET, समस्या 500 त्रुटि गायब हो गई!

 type:'POST'

10
लेकिन एक वास्तविक समाधान नहीं है। कुछ चीजें POST होनी चाहिए
atilkan

2
यह पूरी तरह से गलत है। यदि POST को GET में बदलना वास्तव में काम करता है तो आप पहली बार में गलत HTTPVerb का उपयोग कर रहे थे। यदि आपको POST का उपयोग करना चाहिए क्योंकि उदाहरण के लिए आप पेलोड भेज रहे हैं, तो आपको POST का उपयोग करना चाहिए और GET का उपयोग करने से काम नहीं चलेगा। और दूसरी तरफ अगर आप कुछ प्राप्त कर रहे हैं और GET का उपयोग कर सकते हैं, तो POST का उपयोग न करें, GET कैश हो जाता है (कॉन्फ़िगरेशन पर कभी-कभी निर्भर करता है)
polonskyg

18

यह अजाक्स अनुरोध के माध्यम से डेटा प्राप्त करने के लिए अजाक्स अनुरोध सरल कोड है

$.ajax({
    type: "POST",
    url: "InlineNotes/Note.ashx",
    data: '{"id":"' + noteid+'"}',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(data) {
        alert(data.d);
    },
    error: function(data){
        alert("fail");
    }
});

3
contentType: "application / json; charset = utf-8", मैंने इस लाइन को हटा दिया तब मेरी समस्या हल हुई
Taja_100

11

मैंने एक समान यौगिक त्रुटि का अनुभव किया, जिसे दो समाधानों की आवश्यकता थी। मेरे मामले में प्रौद्योगिकी स्टैक MVC / ASP.NET / IIS / JQuery था। सर्वर का पक्ष 500 त्रुटि के साथ विफल हो रहा था, और नियंत्रक द्वारा सर्वर साइड पर डिबग बनाने के अनुरोध को नियंत्रित करने से पहले ऐसा हो रहा था।

निम्न क्लाइंट साइड डीबग ने मुझे सर्वर त्रुटि को निर्धारित करने में सक्षम किया

$ .Ajax त्रुटि कॉल बैक में, कंसोल के लिए त्रुटि विवरण प्रदर्शित करें

  error: (error) => {
                     console.log(JSON.stringify(error));
   }

यह कम से कम, मुझे प्रारंभिक सर्वर त्रुटि को देखने के लिए सक्षम करता है

"JSON धारावाहिक के लिए बहुत बड़ा अनुरोध था"

यह क्लाइंट web.config में हल किया गया था

<appSettings>
    <add key="aspnet:MaxJsonDeserializerMembers" value="150000" />

हालाँकि, अनुरोध अभी भी विफल रहा। लेकिन इस बार एक अलग त्रुटि के साथ जो मैं अब सर्वर साइड पर डीबग करने में सक्षम था

"अनुरोध इकाई बहुत बड़ी है"

यह सेवा web.config में निम्नलिखित जोड़कर हल किया गया था

<configuration>
…
 <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferPoolSize="524288">
          <readerQuotas maxDepth="32" maxStringContentLength="2147483647"
            maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"  />
        </binding>
      </basicHttpBinding>
    </bindings>

कॉन्फ़िगरेशन मानों को आगे ट्यूनिंग की आवश्यकता हो सकती है, लेकिन कम से कम यह ajax पोस्ट के कारण सर्वर त्रुटियों को हल करता है।


10

आप यहाँ (या यहाँ ) HTTP स्थिति कोड देख सकते हैं , यह त्रुटि आपको बता रही है:

"सर्वर को एक अप्रत्याशित स्थिति का सामना करना पड़ा जिसने इसे अनुरोध को पूरा करने से रोक दिया।"

आपको अपना सर्वर डीबग करना होगा।


धन्यवाद, मुझे यह समस्या थी, एक्शन फ़ाइल में मैं डेटा को स्टोर करने के लिए डेटाबेस से कनेक्ट नहीं कर सका इसलिए jQuery पोस्ट () किया। () में 500 त्रुटि मिली।
हरकेली गर्ग

8

मैं आज उसी चीज में दौड़ता हूं। जैसा कि फ़ायरफ़ॉक्स के लिए फ़ायरबग प्राप्त करने से पहले सुझाव दिया गया है, कंसोल सक्षम करें और POST प्रतिक्रिया का पूर्वावलोकन करें। इससे मुझे यह पता लगाने में मदद मिली कि समस्या कितनी मूर्खतापूर्ण थी। मेरी कार्रवाई एक प्रकार के इंट के मूल्य की उम्मीद कर रही थी और मैं स्ट्रिंग पोस्ट कर रहा था। (ASP.NET MVC2)


6

EventVwr (asp.net से चेतावनी) में एक ईवेंट लॉग होना चाहिए, जो आपको अधिक विवरण प्रदान कर सके जहां त्रुटि हो सकती है।


4

ASP.NET से 500 का अर्थ है कि अनुरोध परोसते समय किसी बिंदु पर एक अनछुए अपवाद को फेंक दिया गया था।

मेरा सुझाव है कि आप वेब सर्वर प्रक्रिया में डिबगर संलग्न करें (यह मानते हुए कि आपके पास पहुंच है)।

एक अजीब बात: आप सर्वर से एक पोस्ट अनुरोध करते हैं, लेकिन आप किसी भी डेटा को पारित नहीं करते हैं (सब कुछ क्वेरी स्ट्रिंग में है)। शायद इसके बजाय GET अनुरोध होना चाहिए?

आपको यह भी देखना चाहिए कि URL सही है या नहीं।


ठीक है .. मैं मूल रूप से एक जीईटी का उपयोग कर रहा था लेकिन मुझे वही त्रुटि मिलती है।
निक

1
क्या आपने ब्राउज़र एड्रेस बार से अनुरोध करने की कोशिश की है? क्या आपको 500 का दर्जा मिला है?
कोडपे

3

मैं आज सिर्फ इस समस्या का सामना कर रहा हूं। इस तरह की त्रुटि के कारण, आपको सर्वर से कोई प्रतिक्रिया नहीं मिलेगी, इसलिए, समस्या का पता लगाना बहुत कठिन है।

लेकिन मैं आपको बता सकता हूं "500 आंतरिक सर्वर त्रुटि" सर्वर के साथ त्रुटि है क्लाइंट नहीं, आपको सर्वर साइड स्क्रिप्ट में त्रुटि मिली। कोड क्लोजर को बंद करके टिप्पणी करें और इसे फिर से चलाने का प्रयास करें, आपको जल्द ही पता चल जाएगा कि आपको कहीं चरित्र याद आ रहा है।


3

यदि आप जिस फ़ंक्शन को कॉल कर रहे हैं, तो आप वीबी में वह त्रुटि भी प्राप्त कर सकते हैं , जो वेबसर्विस में सार्वजनिक फ़ंक्शन के बजाय सार्वजनिक साझा फ़ंक्शन से शुरू होती है । (जैसा कि हो सकता है कि आप फ़ंक्शन को क्लास से बाहर स्थानांतरित या कॉपी करें)। बस देखने के लिए एक और बात है।


2

क्या आप अपनी पद्धति के हस्ताक्षर पोस्ट कर सकते हैं जो इस पद को स्वीकार करने वाला है?

इसके अतिरिक्त मुझे एक ही त्रुटि संदेश मिलता है, संभवतः एक अलग कारण से। मेरे YSOD ने डिक्शनरी के बारे में बात की थी जिसमें नॉन-न्युलेबल वैल्यू के लिए वैल्यू नहीं थी। जिस तरह से मुझे YSOD की जानकारी मिली वह था $ .ajax फ़ंक्शन में एक ब्रेकपॉइंट लगाने के लिए जो निम्नानुसार एक त्रुटि वापसी को संभाले:

<script type="text/javascript" language="javascript">
function SubmitAjax(url, message, successFunc, errorFunc) {
    $.ajax({
        type:'POST',
        url:url,
        data:message,
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success:successFunc,
        error:errorFunc
        });

};

फिर मेरी त्रुटि

function(request, textStatus, errorThrown) {
        $("#install").text("Error doing auto-installer search, proceed with ticket submission\n"
        +request.statusText); }

IE का उपयोग करके मैं मेनू देखने गया -> स्क्रिप्ट डिबगर -> अगले बयान पर विराम। फिर उस कोड को ट्रिगर करने के लिए चला गया जो मेरी पोस्ट लॉन्च करेगा। यह आम तौर पर मुझे jQuery के पुस्तकालय के अंदर कहीं गहरे में ले गया जहां मैं चाहता था, क्योंकि चयन ड्रॉप डाउन खोलने से jQuery शुरू हो गया। इसलिए मैंने स्टेपओवर को मारा, तो वास्तविक अगली पंक्ति भी टूट जाएगी, जो कि मैं वहीं होना चाहता था। फिर वी.एस. उस पेज के लिए क्लाइंट साइड (डायनामिक) मोड में चला जाता है, और मैंने $("#install")लाइन पर ब्रेक लगा दिया ताकि मैं देख सकूं (डिबगिंग पर माउस का उपयोग करना) अनुरोध, टेक्स्टस्टैटस, एररथ्रोवन में क्या था। निवेदन। Request.ResponseText में एक html संदेश था जहाँ मैंने देखा:

<title>The parameters dictionary contains a null entry for parameter 'appId' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ContentResult CheckForInstaller(Int32)' in 'HLIT_TicketingMVC.Controllers.TicketController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.<br>Parameter name: parameters</title>

इसलिए उस सभी की जाँच करें, और उस मुद्दे के हिस्से में अपने नियंत्रक विधि हस्ताक्षर पोस्ट करें


2

मैंने पाया कि यह त्रुटि है। मेरे पास .htaccess रीडायरेक्ट को एक निर्देशिका में कॉन्फ़िगर किया गया था। अच्छी तरह से यह अजाक्स कॉल को फिर से करता है ( $.post(../ajax.php)), इसलिए यह वास्तविक फ़ाइल (500 त्रुटि के परिणामस्वरूप) नहीं मिल सका।

मैंने ajax.php को एक डायरेक्टरी में रखकर इसे 'फिक्स' कर दिया (तो इसका .htaccessकोई असर नहीं हुआ)।


2

मैं क्रोम डीबगर का उपयोग करके समाधान खोजने में सक्षम था (मेरे पास फायरबग या अन्य तृतीय-पक्ष उपकरण स्थापित नहीं है)

  • डेवलपर टैब पर जाएं (CTRL + MAJ + I)
  • नेटवर्क > उस अनुरोध पर क्लिक करें जो विफल हुआ, लाल> पूर्वावलोकन में

इसने मुझे दिखाया कि मुझे सर्वर पर एक समस्या थी, जब मैं एक मान लौटा रहा था जो स्व-संदर्भित था।


2

मेरे मामले में यह सरल मुद्दा था, लेकिन इसे खोजना मुश्किल था। पृष्ठ निर्देश में गलत इनहेरिट्स विशेषताएँ थीं। इसमें सिर्फ शीर्ष स्तर को शामिल करने की जरूरत होती है और यह काम करता है।

गलत कोड

<%@ Page Language="C#" CodeBehind="BusLogic.aspx.cs" Inherits="BusLogic"%>

सही कोड

<%@ Page Language="C#" CodeBehind="BusLogic.aspx.cs" Inherits="Web.BusLogic" %>

1

CSRF सुरक्षा सक्षम के साथ CodeIgniter फ्रेमवर्क का उपयोग करते समय, निम्नलिखित स्क्रिप्ट को हर उस पृष्ठ पर लोड करें जहाँ ajax POST हो सकता है:

$(function(){
    $.ajaxSetup({
        data: {
            <?php echo $this->config->item('csrf_token_name'); ?>: $.cookie('<?php echo $this->config->item('csrf_cookie_name'); ?>')
        }
    });
});

आवश्यकता है: jQuery और jQuery.cookie प्लगइन

स्रोत: https://stackoverflow.com/a/7154317/2539869 और http://jerel.co/blog/2012/03/a-simple-solution-to-codeigniter-csrf-protection-and-ajax


1

जिस JSON डेटा को आप सर्वर पर भेज रहे हैं, उसका वही नाम होना चाहिए जो आप क्लाइंट साइड में बनाते हैं। Ex:

var obj = {  Id: $('#CompanyId').val(),
             Name: $("#CompanyName").val()
            };

$.Ajax(data: obj,
url: "home/InsertCompany".....

यदि नाम अलग है,

[HttpPost]
public ActionResult InsertCompany(Int32 Id, string WrongName)
{
}

आपको यह त्रुटि मिलेगी।

यदि आप डेटा पास नहीं कर रहे हैं, तो AJAX अनुरोध से डेटा विशेषता को हटा दें।


1

मेरे पास यह समस्या थी, और पता चला कि सर्वर साइड C # विधि स्थिर होनी चाहिए

ग्राहक की ओर:

$.ajax({
            type: "POST",
            url: "Default.aspx/ListItem_Selected",
            data: "{}",
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            success: ListItemElectionSuccess,
            error: ListItemElectionError
        });

        function ListItemElectionSuccess(data) {
            alert([data.d]);
        }
        function ListItemElectionError(data) {

        }

सर्वर साइड:

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public static String ListItem_Selected()
    {
        return "server responce";
    }
}

क्या मुझे एक उदाहरण मिल सकता है कि सर्वर पर JSON ऑब्जेक्ट और गुण कैसे प्राप्त करें? यदि डेटा: {Prop1: "asdf", Prop2: "zxcv"} तो मुझे सार्वजनिक स्थिर स्ट्रिंग ListItem_Selected () फ़ंक्शन के अंदर Prop1 और Prop2 मान कैसे मिलेंगे? धन्यवाद।
मेहदी अनीस

1

जैसा कि मैंने कहा कि आपका रिटर्न स्ट्रिंग डेटा बहुत लंबा है। इसलिए JSON प्रारूप दूषित हो गया है।

इस समस्या के लिए कोई अन्य तरीका है। आपको इस तरह से JSON डेटा के लिए अधिकतम आकार बदलना चाहिए:

Web.Config फ़ाइल खोलें और इन पंक्तियों को कॉन्फ़िगरेशन अनुभाग में पेस्ट करें

<system.web.extensions>
  <scripting>
    <webServices>
      <jsonSerialization maxJsonLength="50000000"/>
    </webServices>
  </scripting>
</system.web.extensions>

1

मैंने भी उसी समस्या का सामना किया। यहां दो तरीके दिए गए हैं जिनके द्वारा मैंने इसे हल किया है- 1. यदि आप कुछ ढांचे का उपयोग कर रहे हैं, तो सुनिश्चित करें कि आप ajax कॉल के साथ CSRF टोकन भेज रहे हैं और यहां बताया गया है कि लारवेल के लिए सिंटैक्स कैसा दिखेगा -

<meta name="_token" content="{{ csrf_token() }}">

अपने जेएस फ़ाइल में अजाक्स कॉल भेजने से पहले इसे कॉल करना सुनिश्चित करें

$.ajaxSetup({
            headers: {
                'X_CSRF-TOKEN' : $('meta[name="_token"]').attr('content')
            }
        });
  1. इसे हल करने का एक और तरीका बदलने के लिए किया जाएगा methodसे postकरने के लिएget

1

मेरे लिए, त्रुटि php फ़ाइल में थी जिसके लिए मैं अनुरोध भेज रहा था। डेटाबेस कनेक्टिविटी में त्रुटि थी। Php कोड को ठीक करने के बाद, त्रुटि हल हो गई।


1

आपके कोड में डेटा टाइप: json है

इस स्थिति में jQuery JSON के रूप में प्रतिक्रिया का मूल्यांकन करता है और एक जावास्क्रिप्ट ऑब्जेक्ट देता है। JSON डेटा एक सख्त तरीके से पार्स किया गया है। किसी भी विकृत JSON को अस्वीकार कर दिया जाता है और एक पार्स त्रुटि डाली जाती है। एक खाली प्रतिक्रिया भी खारिज कर दी जाती है।

सर्वर को प्रतिसाद देना चाहिए nullया {}इसके बजाय।


1

मुझे लगता है कि क्रोम में यह तब हुआ जब मैंने दो 'अजाक्स क्वेरीज़ ' लोडर 'हैंडलर ' पर की

जैसे है $(function() { $.ajax() ... $.ajax() ... });

मैंने इसका उपयोग करने से परहेज किया:

setTimeout(function_to_do_2nd_ajax_request, 1);

यह संभवतः एक क्रोम और / या jquery बग है


1

मुझे यह समस्या थी क्योंकि जिस पृष्ठ को मैंने ajax पोस्ट से बुलाया था EnableViewState="false"औरEnableViewStateMac="false" नहीं बल्कि पेज कहा जाता है।

जब मैंने इसे दोनों पृष्ठों पर डाला तो सब कुछ काम करने लगा। जब मैंने मैक एड्रेस अपवाद देखा तो मुझे इस पर संदेह हुआ।


0

आपका रिटर्न स्ट्रिंग डेटा बहुत लंबा हो सकता है।

<system.web>        
   <compilation debug="true" targetFramework="4.0" />
   <httpRuntime maxRequestLength="2147483647" />
</system.web>

उदाहरण के लिए:

  • 1 चार = 1 बाइट
  • 5 चार = 5 बाइट
  • "हक्की" = 5 बाइट

0

अपने सर्वर की ओर से एक कोशिश कैच ब्लॉक का उपयोग करें और कैच ब्लॉक में क्लाइंट को अपवाद त्रुटि वापस दें। यह आपको एक उपयोगी त्रुटि संदेश देना चाहिए।


0

मेरे पास AJAX कोड के साथ समान समस्याएं हैं जो छिटपुट रूप से "500 आंतरिक सर्वर त्रुटि" देता है। मैंने "fastCGI" RequestTimeout और ActivityTimeout मानों को बढ़ाकर समस्या का समाधान किया।


किस वेब सर्वर को यह चिंता है? क्या आप कृपया कुछ कोड जोड़ सकते हैं?
मैक्स लेसके

0

मुझे इस पर देर हो रही है, लेकिन मैं इस मुद्दे को ले रहा था और मैंने जो सीखा है वह यह था कि यह मेरे PHP कोड (मेरे मामले में db के लिए एक चयन का वाक्यविन्यास) पर एक त्रुटि थी। आमतौर पर यह त्रुटि 500 ​​वाक्यविन्यास का उपयोग करने के लिए कुछ है - मेरे अनुभव में। दूसरे शब्द में: "लोगवेयर" मुद्दा! : डी


0

"विकृत JSON" उत्तर के अतिरिक्त, यदि आप जिस क्वेरी को चला रहे हैं वह ऑब्जेक्ट या कुछ भी है जो डेटा को क्रमबद्ध होने से रोकता है, तो आपको यह त्रुटि मिलेगी। आपको हमेशा यह सुनिश्चित करना चाहिए कि आपके पास JSON और केवल JSON आपके एक्शन विधि के अंत में है या आप जो भी हैं, उससे डेटा प्राप्त कर रहे हैं।


0

आमतौर पर आपकी प्रॉपर्टी पूरी तरह से सही नहीं होती है या आपके सर्वर प्रोसेसिंग में कुछ गड़बड़ है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.