Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Ajax Object.status=404 / 3 сообщений из 3, страница 1 из 1
01.10.2014, 15:43
    #38763482
BikArt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax Object.status=404
Добрый день!
Хотел сделать на сайте поиск с выводом результатов во время набора(как в яндексе или гугле), для этого использовал Ajax:
Сама страница с формой поиска:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
<script language = "javascript" type="text/javascript">
    function setData(sID) {
        var targetObj = document.getElementById("idinput");
        var targetObj1 = document.getElementById(sID);
        var targetObj2 = document.getElementById('<%=iddiv.ClientID%>');
        targetObj.value = "";
        targetObj.value = targetObj1.innerHTML;
        targetObj2.innerHTML = "";
    }

    function postDataFromServer(dataSource, targetControl, datasend) {
        var myAjaxObject = false;
        var vIdInput = "idinput";
        try {
            myAjaxObject = new ActiveXObject("MSXML2.XMLHttp.5.0");
        }
        catch (exception1) {
            try {
                XMLHttpRequestObject = new ActiveXObject("MSXML2.XMLHttp.4.0");
            }
            catch (exception2) {
                try {
                    XMLHttpRequestObject = new ActiveXObject("MSXML2.XMLHttp.3.0");
                }
                catch (exception3) {
                    try {
                        XMLHttpRequestObject = new ActiveXObject("MSXML2.XMLHttp");
                    }
                    catch (exception4) {
                        if (window.XMLHttpRequest) {
                            myAjaxObject = new XMLHttpRequest();
                        }
                        else {
                            if (window.ActiveXObject) {
                                myAjaxObject = new ActiveXObject("Microsoft.XMLHTTP");
                            }
                        }
                    }
                }
            }
        }
        if (myAjaxObject) {
            myAjaxObject.open("POST", dataSource);
            myAjaxObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
            myAjaxObject.onreadystatechange = function () {
                if (myAjaxObject.readyState == 4 && myAjaxObject.status == 200) // при загрузке на сервер myAjaxObject.status == 404 !!!
                 {
                    var targetObj = document.getElementById('<%=iddiv.ClientID%>');
                    var t = myAjaxObject.responseText;
                    var t2 = "";
                    var s = "";
                    var f = 0;//флаг
                    var h = "";
                    for (i = 0; i < t.length; i++) {
                        if (t.substr(i, 1) == '$') {
                            f = 1;
                            h = "";
                        }
                        else {
                            if (t.substr(i, 1) == '@') {
                                f = 0;
                                t2 += "<a href='/Default.aspx?tabid=83&pid=" + h + "'>" + s + "</a></br>";
                                s = "";
                                targetObj.style.display = "";
                            }
                            else {
                                if (f == 1)
                                    h += t.substr(i, 1);
                                else
                                    s += t.substr(i, 1);
                            }
                        }
                    }
                    targetObj.innerHTML = t2;
                }
                alert(myAjaxObject.status);
            }
            myAjaxObject.send("mydata=" + datasend);
        }
    }
</script>

<table cellpadding="0" cellspacing="0" border="0" width="100%">
    <tr>
        <td align="center" style="padding:20px;">
            <div style="text-align:left;">
                <input type="text" name="idinput" style="padding:2px; height:20px; width:500px;" onkeyup ="if(this.form.idinput.value.length != 0){postDataFromServer('getajax.simple','iddiv',this.form.idinput.value)}" />&nbsp;&nbsp;<asp:Button runat="server" id="btn_search" Text="Найти" Height="30px" Width="60px"/>

                <div id="iddiv" runat="server" style="position:absolute; border:solid 1px black; background-color:Window; padding:2px; width:500px; display:none;"></div>
            </div>
            
        </td>
    </tr>
</table>



MyHandlerAjax.cs, который находится в папке App_Code в корне
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
public class MyHandlerAjax : IHttpHandler
{
    bool IHttpHandler.IsReusable
    {
        get { return true; }
    }

    void IHttpHandler.ProcessRequest(HttpContext context)
    {
        HttpRequest Request = context.Request;
        HttpResponse Response = context.Response;
        string s = string.Empty;
        string s1 = string.Empty;
        string s2 = string.Empty;
        if (Request.Form["mydata"] != null)
        {
            s = Request.Form["mydata"];
        }
        if (s.Length > 3)
        {
            SqlConnection con = new SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["SiteSqlServer"].ConnectionString);
            con.Open();
            SqlCommand com = new SqlCommand("sql запрос", con);
            SqlDataReader reader = com.ExecuteReader();
            while (reader.Read())
            {
                string sName = reader["pname"].ToString();
                string sHref = reader["id"].ToString();
                s2 += sName.Trim() + "$" + sHref + "@";

            }
            reader.Close();
            con.Close();
        }
        if (!string.IsNullOrEmpty(s2))
        {
            Response.Write(s2);
        }
    }
}


И добавляем обработчик в web.config:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
<system.webServer>
    ....
    <handlers>
      ....
      <add name="getajax" verb="*" path="getajax.simple" type="MyHandlerAjax"/>
    </handlers>
    <validation validateIntegratedModeConfiguration="false" />
  </system.webServer>
  <system.web>


Локально - все работает идеально, но после загрузки на сервер дальше этой проверки
Код: javascript
1.
if (myAjaxObject.readyState == 4 && myAjaxObject.status == 200)

дело не доходит, т.к. myAjaxObject.status=404.
В чем может быть дело?
...
Рейтинг: 0 / 0
02.10.2014, 22:13
    #38765428
BikArt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax Object.status=404
Причину нашел сам - в локальных настройках iis поменял режим конвейера со встроенного на классический - локально тоже перестало работать
Код: javascript
1.
myAjaxObject.status=404


Поэтому 2 вопроса: как сделать так, что бы этот код заработал на классическом режиме конвейера или как поменять этот режим на хостинге?)
...
Рейтинг: 0 / 0
03.10.2014, 12:01
    #38765847
BikArt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax Object.status=404
Всем спасибо за помощь, попросил хостера сменить версию iis - и код из первого сообщения заработал!
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Ajax Object.status=404 / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]