簡體   English   中英

你能告訴我這個表格在做什么嗎?

[英]Can you tell me what this form is doing?

我不明白這個表格在做什么。 我對 Ajax 非常缺乏經驗,對 PHP 只有些經驗。 我了解 ajax.php 在提交表單后運行,但我不明白 onsubmit 部分。

此表單目前返回錯誤“解析 JSON 時出錯”。

<form
    action="<?=$module->path?>/ajax.php"
    method="post"
    enctype="multipart/form-data"
    class="tabmin_form"
    onsubmit="return handleAjaxForm(this, function(resp){AlertSet.addJSON(resp).show(); tabset_<?=$module?>.<?=$verb=='add'? 'getTab(\''.$tab.'\').reload(false)' : 'getTab(\''.$tab.$workshop->id.'\').close(false)'?>; tabset_<?=$module?>.getTab('view').show();}, function(resp) {AlertSet.addJSON(resp).show();})"
    autocomplete="off">

onsubmit只是內聯事件,理想情況下,為了可維護性,您可能希望將其抽象為丑陋。


將其拉出並格式化,然后分解每一行。

handleAjaxForm - 需要 3 個參數,第一個是上下文,第二個是成功回調,第三個是錯誤回調。

AlertSet.addJSON(resp).show(); - 將響應傳遞給 AlertSet.addJSON 方法,然后使用 show() 方法鏈接以顯示警報。

以下是 PHP 計算傳遞tabset_module_name.getTab()方法的內容,或者如果不是$verb == 'add'它調用.close()

tabset_<?=$module?>.<?=$verb=='add'? 'getTab(\''.$tab.'\').reload(false)': 'getTab(\''.$tab.$workshop->id.'\').close(false)'?>;

然后是成功回調的最后一行:

tabset_<?=$module?>.getTab('view').show(); 這是調用 show 方法。

return handleAjaxForm(this, function(resp){
  //
  AlertSet.addJSON(resp).show(); 

  //
  tabset_<?=$module?>.<?=$verb=='add'? 'getTab(\''.$tab.'\').reload(false)' : 'getTab(\''.$tab.$workshop->id.'\').close(false)'?>; 

  //
  tabset_<?=$module?>.getTab('view').show();
}, function(resp) {
   AlertSet.addJSON(resp).show();
})

長話短說,發生錯誤是因為resp不是 JSON,請檢查您的服務器響應的內容,最有可能的是 HTML

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM