2017-08-31 38 views
1

我有一个PHP cURL脚本,它将内容上传到Drupal 7网站。我使用<input>name,并通过POST请求发送值。我偶然发现了一个选择标签,不幸的是,它有另一个选择连接到它。这两个<select>的选项最终都会结束为type="hidden"<input>,其中POST请求从中获取值。从不同的SELECT获得cURL POST值

我的代码:

// first select 
<select id="edit-kat-0" name="kat_epi[und][sel][0]" class="form-select"> 
    <option value="6080"> 
    // ... 
</select> 

// second select 
<select id="edit-kat-1" name="field_kat_epi[und][sel][1]" class="form-select"> 
    <option value="7090"> 
    // ... 
</select> 

// hidden input is used to send data 
<input type="hidden" name="kat_epix[und][hsid]" value="59a7b06e12df0" /> 

卷曲请求命令:

curl_setopt($crl, CURLOPT_POST, 1); 
    $postdata = array( 
       "title_field[und][0][value]"=>"emporio", 
       "kat_epix[und][hsid]"=>"6863", 
       "op"=>"Αποθήκευση", 
        ); 
    curl_setopt ($crl, CURLOPT_POSTFIELDS, $postdata); 
    $result=curl_exec($crl); 

我已经使用了隐藏<input>与值从第一<select>提交表单,但我不知道如何来自<select>元素的值合并。

我试图用JavaScript来检查值,但Drupal对它进行了编码,使它无法知道。我尝试了一些明显的解决方案,比如“6080 + 7090”或“6080 & 7090”,但没有运气。有谁知道Drupal 7如何合并<select>元素的值?

+0

您能否与我们分享您使用的cURL请求命令?另外,你是否已经尝试在你的HTML代码中使用linter?编辑帖子时,我必须纠正一些空格。我希望这些是不相关的拼写错误,否则,这些可能会影响你的结果。 –

+0

curl_setopt($ crl,CURLOPT_POSTFIELDS,$ postdata); $ result = curl_exec($ crl);这是你想要的吗?我已经成功发布了内容,只是无法从第二个选择中指定子类别 –

+0

是的。我已将这添加到您的问题。 –

回答

0

这花了我很多的努力,但我终于设法自己解决这个问题。连接的SELECT是drupal Hierarchical Select模块的一个功能。当选择子菜单元素时,该模块将刷新页面。这样,SELECT将从所有其他字段中分别使用POST请求。

我所做的是让cURL调用分层SELECT,然后再调用其他字段.Firefox的网络控制台可以帮助您查看所有POST请求及其参数。