2015-03-18 2 views
-1

У меня две проблемы в этой комбинации.jQuery Ajax + Классическая ошибка возврата ASP «неожиданный конец ввода»

  1. После Ajax всегда возвращает ошибку (неожиданный конец ввода), в локальном хосте он все еще может сохранить дату успешно, кажется, не является большой проблемой.

  2. код работает в моем локальном хосте, но не работает в 1App сервера (http://www.1apps.net/), я пытался представить технику вопрос и им был ответ быстро с этим способом http://www.mikesdotnetting.com/article/98/ajax-with-classic-asp-using-jquery

Однако я подумайте, как в этой статье должно работать, но я смущен, почему мой код работает только на локальном хосте и другом веб-сервере, но не на 1App. Ниже мой код:

ASP:

if request.QueryString("action")="CostUpdate" then 

Response.ContentType = "application/json" 

a = request.form("GI") 
b = request.form("GP") 
c = request.form("NA") 


Set rs = Server.CreateObject("ADODB.Recordset") 
sql = "Select * From Cost where CostDate = #" & date() & "# and CostItem ='" & a & "'" 
rs.open sql,conn,1,3 

if rs.eof then 

Set rs = Server.CreateObject("ADODB.Recordset") 
sql = "Select * From Cost" 
rs.open sql,conn,1,3 

rs.addnew 
rs("CostDate")=date() 
rs("CostItem")=a 
rs("CostAmount")=c 
rs("CostNumber")= b * c 
rs.update 

else 

Set rs = Server.CreateObject("ADODB.Recordset") 
sql = "Select * From images where CostDate =#" & adid & "# and CostItem = " & a 
rs.open sql,conn,1,3 

rs("CostAmount")=c 
rs("CostNumber")=b * c 
rs.update 

end if 
end if 

JS

var $GoodsId = $("#costtable tbody").find("tr").eq(c).find("input").eq(1).val(); 
    var $GoodsPrice = $("#costtable tbody").find("tr").eq(c).find("input").eq(2).val(); 
    var $NewAmount = $("#costtable tbody").find("tr").eq(c).find("input").eq(3).val(); 

    $.ajax({ 
     url: 'work.asp?action=CostUpdate', 
     type: "POST", 
     data: { 
      GI: $GoodsId,GP: $GoodsPrice,NA: $NewAmount 

     }, 
     dataType: "json", 
     error: function (xhr, status, error) { 
      console.info("CallAjax"); 
      console.info('An error occured.. ' + xhr.responseText + '..' + error); 
     }, 
     success: function() { 
      console.info("Sucess"); 
     } 
    }); 
+0

Если только вы * имели * следовали этой статье. – Lankymart

+0

Почему вы задаете свой тип контента Json на странице asp? Кажется, нет данных для отталкивания –

+0

@AliSheikhpour вы имеете в виду это «Response.ContentType =" application/json? »Как я знаю, я могу получить json-контент, если я поставил там это заявление, я ошибаюсь? –

ответ

1

есть несколько проблем в осины код:

  1. Не открывайте новую команду SQL когда rs по-прежнему открыт. Поэтому я создал новый набор записей (rs2) для использования внутри , если.
  2. Вам не нужно воссоздавать rs для каждого действия. поэтому я удалил повторение createobject.
  3. Нет необходимости устанавливать contentType для Json, поскольку данные не генерируются. Вы только обновляете базу данных.
  4. Используйте команду rs.open sql, objcon, 2,2, если вы хотите использовать команду обновления sql.
  5. rs.close, а также set rs = nothing, чтобы освободить память сервера.
  6. нет определения для параметра adid. вы определили его где-то еще?
  7. Вы являетесь публикацией данные для asp-страницы не получение. Таким образом, вы должны использовать request.form в первой строке, а также отправить параметр «действие» в опубликованные данные.
  8. это все asp коды? где вы определяете conn?

Помимо ошибки «неожиданный конец ввода» не является ошибкой ASP. Вы можете забыть} внутри кодов JavaScript. представленный код в порядке, проверьте весь свой код.

if request.form("action")="CostUpdate" then 

a = request.form("GI") 
b = request.form("GP") 
c = request.form("NA") 


Set rs = Server.CreateObject("ADODB.Recordset") 
Set rs2 = Server.CreateObject("ADODB.Recordset") 

sql = "Select * From Cost where CostDate = #" & date() & "# and CostItem ='" & a & "'" 
rs.open sql,conn,1,3 

if rs.eof then 

sql = "Select * From Cost" 
rs2.open sql,conn,2,2 

rs2.addnew 
rs2("CostDate")=date() 
rs2("CostItem")=a 
rs2("CostAmount")=c 
rs2("CostNumber")= b * c 
rs2.update 
rs2.close 

else 

sql = "Select * From images where CostDate =#" & adid & "# and CostItem = " & a 
rs2.open sql,conn,2,2 
rs2("CostAmount")=c 
rs2("CostNumber")=b * c 
rs2.update 
rs2.close 

end if 
rs.close 
end if 

set rs=nothing 
set rs2=nothing 
+0

Спасибо!! @ Али Шейхпур, код ASP выглядит лучше после вашего пересмотра. Теперь я решил разместить свой сайт на Azure, он работает. –

Смежные вопросы